Package org.apache.sshd.cli.client
Class SshKeyScanMain
- java.lang.Object
-
- org.apache.sshd.cli.client.SshKeyScanMain
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,java.nio.channels.Channel,java.util.concurrent.Callable<java.lang.Void>,java.util.EventListener,org.apache.sshd.client.keyverifier.ServerKeyVerifier,org.apache.sshd.common.session.SessionListener,org.apache.sshd.common.util.logging.SimplifiedLog,org.apache.sshd.common.util.SshdEventListener
public class SshKeyScanMain extends java.lang.Object implements java.nio.channels.Channel, java.util.concurrent.Callable<java.lang.Void>, org.apache.sshd.client.keyverifier.ServerKeyVerifier, org.apache.sshd.common.session.SessionListener, org.apache.sshd.common.util.logging.SimplifiedLogA naive implementation of ssh-keyscan(1)
-
-
Field Summary
Fields Modifier and Type Field Description private org.apache.sshd.client.SshClientclientprivate java.util.Map<java.lang.String,java.lang.String>currentHostFingerprintsstatic java.util.List<java.lang.String>DEFAULT_KEY_TYPESDefault key types if not overridden from the command linestatic java.util.logging.LevelDEFAULT_LEVELstatic longDEFAULT_TIMEOUTprivate java.io.InputStreaminputprivate java.util.List<java.lang.String>keyTypesprivate java.util.logging.Levellevelprivate java.util.concurrent.atomic.AtomicBooleanopenprivate intportprivate longtimeout
-
Constructor Summary
Constructors Constructor Description SshKeyScanMain()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Voidcall()voidclose()protected java.util.List<java.security.KeyPair>createKeyPairs(java.lang.String keyType)protected java.util.Map<java.lang.String,java.util.List<java.security.KeyPair>>createKeyPairs(java.util.Collection<java.lang.String> typeNames)java.io.InputStreamgetInputStream()java.util.List<java.lang.String>getKeyTypes()java.util.logging.LevelgetLogLevel()intgetPort()longgetTimeout()static <S extends SshKeyScanMain>
SinitializeScanner(S scanner, java.util.Collection<java.lang.String> hosts)booleanisEnabledLevel(java.util.logging.Level level)booleanisOpen()voidlog(java.util.logging.Level level, java.lang.Object message, java.lang.Throwable t)protected voidlogNegotiationProposal(java.lang.String type, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> proposal)protected voidlogSessionEvent(org.apache.sshd.common.session.Session session, java.lang.Object event)static voidmain(java.lang.String[] args)static java.util.List<java.lang.String>parseCommandLineArguments(SshKeyScanMain scanner, java.lang.String... args)protected voidresolveServerKeys(org.apache.sshd.client.SshClient client, java.lang.String host, java.lang.String kt, java.util.List<java.security.KeyPair> ids)protected voidresolveServerKeys(org.apache.sshd.client.SshClient client, java.lang.String host, java.util.Map<java.lang.String,java.util.List<java.security.KeyPair>> pairsMap, java.util.Map<java.lang.String,java.util.List<org.apache.sshd.common.NamedFactory<org.apache.sshd.common.signature.Signature>>> sigFactories)protected java.util.List<org.apache.sshd.common.NamedFactory<org.apache.sshd.common.signature.Signature>>resolveSignatureFactories(java.lang.String keyType)voidsessionClosed(org.apache.sshd.common.session.Session session)voidsessionCreated(org.apache.sshd.common.session.Session session)voidsessionEvent(org.apache.sshd.common.session.Session session, org.apache.sshd.common.session.SessionListener.Event event)voidsessionException(org.apache.sshd.common.session.Session session, java.lang.Throwable t)voidsessionNegotiationEnd(org.apache.sshd.common.session.Session session, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> clientProposal, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> serverProposal, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> negotiatedOptions, java.lang.Throwable reason)voidsessionNegotiationStart(org.apache.sshd.common.session.Session session, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> clientProposal, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> serverProposal)voidsetInputStream(java.io.InputStream input)static <S extends SshKeyScanMain>
SsetInputStream(S scanner, java.util.Collection<java.lang.String> hosts)voidsetKeyTypes(java.util.List<java.lang.String> keyTypes)voidsetLogLevel(java.util.logging.Level level)voidsetPort(int port)voidsetTimeout(long timeout)private static java.lang.StringtoString(java.net.SocketAddress addr)booleanverifyServerKey(org.apache.sshd.client.session.ClientSession sshClientSession, java.net.SocketAddress remoteAddress, java.security.PublicKey serverKey)protected voidwriteServerKey(java.lang.String remoteLocation, java.lang.String keyType, java.security.PublicKey serverKey)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
-
-
Field Detail
-
DEFAULT_KEY_TYPES
public static final java.util.List<java.lang.String> DEFAULT_KEY_TYPES
Default key types if not overridden from the command line
-
DEFAULT_TIMEOUT
public static final long DEFAULT_TIMEOUT
-
DEFAULT_LEVEL
public static final java.util.logging.Level DEFAULT_LEVEL
-
open
private final java.util.concurrent.atomic.AtomicBoolean open
-
client
private org.apache.sshd.client.SshClient client
-
port
private int port
-
timeout
private long timeout
-
keyTypes
private java.util.List<java.lang.String> keyTypes
-
input
private java.io.InputStream input
-
level
private java.util.logging.Level level
-
currentHostFingerprints
private final java.util.Map<java.lang.String,java.lang.String> currentHostFingerprints
-
-
Method Detail
-
getPort
public int getPort()
-
setPort
public void setPort(int port)
-
getInputStream
public java.io.InputStream getInputStream()
-
setInputStream
public void setInputStream(java.io.InputStream input)
-
getKeyTypes
public java.util.List<java.lang.String> getKeyTypes()
-
setKeyTypes
public void setKeyTypes(java.util.List<java.lang.String> keyTypes)
-
getTimeout
public long getTimeout()
-
setTimeout
public void setTimeout(long timeout)
-
getLogLevel
public java.util.logging.Level getLogLevel()
-
setLogLevel
public void setLogLevel(java.util.logging.Level level)
-
log
public void log(java.util.logging.Level level, java.lang.Object message, java.lang.Throwable t)- Specified by:
login interfaceorg.apache.sshd.common.util.logging.SimplifiedLog
-
isEnabledLevel
public boolean isEnabledLevel(java.util.logging.Level level)
- Specified by:
isEnabledLevelin interfaceorg.apache.sshd.common.util.logging.SimplifiedLog
-
call
public java.lang.Void call() throws java.lang.Exception- Specified by:
callin interfacejava.util.concurrent.Callable<java.lang.Void>- Throws:
java.lang.Exception
-
resolveServerKeys
protected void resolveServerKeys(org.apache.sshd.client.SshClient client, java.lang.String host, java.util.Map<java.lang.String,java.util.List<java.security.KeyPair>> pairsMap, java.util.Map<java.lang.String,java.util.List<org.apache.sshd.common.NamedFactory<org.apache.sshd.common.signature.Signature>>> sigFactories) throws java.io.IOException- Throws:
java.io.IOException
-
resolveServerKeys
protected void resolveServerKeys(org.apache.sshd.client.SshClient client, java.lang.String host, java.lang.String kt, java.util.List<java.security.KeyPair> ids) throws java.lang.Exception- Throws:
java.lang.Exception
-
sessionCreated
public void sessionCreated(org.apache.sshd.common.session.Session session)
- Specified by:
sessionCreatedin interfaceorg.apache.sshd.common.session.SessionListener
-
sessionEvent
public void sessionEvent(org.apache.sshd.common.session.Session session, org.apache.sshd.common.session.SessionListener.Event event)- Specified by:
sessionEventin interfaceorg.apache.sshd.common.session.SessionListener
-
sessionException
public void sessionException(org.apache.sshd.common.session.Session session, java.lang.Throwable t)- Specified by:
sessionExceptionin interfaceorg.apache.sshd.common.session.SessionListener
-
sessionClosed
public void sessionClosed(org.apache.sshd.common.session.Session session)
- Specified by:
sessionClosedin interfaceorg.apache.sshd.common.session.SessionListener
-
sessionNegotiationStart
public void sessionNegotiationStart(org.apache.sshd.common.session.Session session, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> clientProposal, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> serverProposal)- Specified by:
sessionNegotiationStartin interfaceorg.apache.sshd.common.session.SessionListener
-
logNegotiationProposal
protected void logNegotiationProposal(java.lang.String type, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> proposal)
-
sessionNegotiationEnd
public void sessionNegotiationEnd(org.apache.sshd.common.session.Session session, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> clientProposal, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> serverProposal, java.util.Map<org.apache.sshd.common.kex.KexProposalOption,java.lang.String> negotiatedOptions, java.lang.Throwable reason)- Specified by:
sessionNegotiationEndin interfaceorg.apache.sshd.common.session.SessionListener
-
logSessionEvent
protected void logSessionEvent(org.apache.sshd.common.session.Session session, java.lang.Object event)
-
verifyServerKey
public boolean verifyServerKey(org.apache.sshd.client.session.ClientSession sshClientSession, java.net.SocketAddress remoteAddress, java.security.PublicKey serverKey)- Specified by:
verifyServerKeyin interfaceorg.apache.sshd.client.keyverifier.ServerKeyVerifier
-
writeServerKey
protected void writeServerKey(java.lang.String remoteLocation, java.lang.String keyType, java.security.PublicKey serverKey) throws java.lang.Exception- Throws:
java.lang.Exception
-
toString
private static java.lang.String toString(java.net.SocketAddress addr)
-
resolveSignatureFactories
protected java.util.List<org.apache.sshd.common.NamedFactory<org.apache.sshd.common.signature.Signature>> resolveSignatureFactories(java.lang.String keyType) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
createKeyPairs
protected java.util.Map<java.lang.String,java.util.List<java.security.KeyPair>> createKeyPairs(java.util.Collection<java.lang.String> typeNames) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
createKeyPairs
protected java.util.List<java.security.KeyPair> createKeyPairs(java.lang.String keyType) throws java.security.GeneralSecurityException- Throws:
java.security.GeneralSecurityException
-
isOpen
public boolean isOpen()
- Specified by:
isOpenin interfacejava.nio.channels.Channel
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.nio.channels.Channel- Specified by:
closein interfacejava.io.Closeable- Throws:
java.io.IOException
-
parseCommandLineArguments
public static java.util.List<java.lang.String> parseCommandLineArguments(SshKeyScanMain scanner, java.lang.String... args) throws java.io.IOException
- Throws:
java.io.IOException
-
setInputStream
public static <S extends SshKeyScanMain> S setInputStream(S scanner, java.util.Collection<java.lang.String> hosts) throws java.io.IOException
- Throws:
java.io.IOException
-
initializeScanner
public static <S extends SshKeyScanMain> S initializeScanner(S scanner, java.util.Collection<java.lang.String> hosts) throws java.io.IOException
- Throws:
java.io.IOException
-
main
public static void main(java.lang.String[] args) throws java.lang.Exception- Throws:
java.lang.Exception
-
-