public class SshClient extends AbstractFactoryManager implements ClientFactoryManager, ClientSessionCreator, Closeable
Entry point for the client side of the SSH protocol.
The default configured client can be created using
the setUpDefaultClient()
. The next step is to
start the client using the start()
method.
Sessions can then be created using on of the
ClientSessionCreator.connect(String, String, int)
or ClientSessionCreator.connect(String, java.net.SocketAddress)
methods.
The client can be stopped any time using the stop()
method.
Following is an example of using the SshClient
:
try (SshClient client = SshClient.setUpDefaultClient()) { client.start(); try (ClientSession session = client.connect(login, host, port).await().getSession()) { session.addPasswordIdentity(password); session.auth().verify(...timeout...); try (ClientChannel channel = session.createChannel(ClientChannel.CHANNEL_SHELL)) { channel.setIn(new NoCloseInputStream(System.in)); channel.setOut(new NoCloseOutputStream(System.out)); channel.setErr(new NoCloseOutputStream(System.err)); channel.open(); channel.waitFor(ClientChannel.CLOSED, 0); } finally { session.close(false); } } finally { client.stop(); } }
AbstractCloseable.State
AttributeStore.AttributeKey<T>
Modifier and Type | Field and Description |
---|---|
protected IoConnector |
connector |
static List<ServiceFactory> |
DEFAULT_SERVICE_FACTORIES |
static Factory<SshClient> |
DEFAULT_SSH_CLIENT_FACTORY |
static List<NamedFactory<UserAuth>> |
DEFAULT_USER_AUTH_FACTORIES
Default user authentication preferences if not set
|
protected SessionFactory |
sessionFactory |
protected List<NamedFactory<UserAuth>> |
userAuthFactories |
protected UserInteraction |
userInteraction |
agentFactory, channelFactories, channelListenerProxy, channelListeners, executor, fileSystemFactory, forwarderFactory, forwardingFilter, globalRequestHandlers, ioServiceFactory, ioServiceFactoryFactory, randomFactory, serviceFactories, sessionListenerProxy, sessionListeners, sessionTimeoutListener, shutdownExecutor, timeoutListenerFuture, tunnelListenerProxy, tunnelListeners
closeFuture, lock, state
log
CLIENT_IDENTIFICATION, DEFAULT_HEARTBEAT_INTERVAL, DEFAULT_IGNORE_INVALID_IDENTITIES, DEFAULT_KEEP_ALIVE_HEARTBEAT_STRING, HEARTBEAT_INTERVAL, HEARTBEAT_REQUEST, IGNORE_INVALID_IDENTITIES
AGENT_FORWARDING_TYPE, AGENT_FORWARDING_TYPE_IETF, AGENT_FORWARDING_TYPE_OPENSSH, AUTH_TIMEOUT, CHANNEL_CLOSE_TIMEOUT, DEFAULT_AUTH_TIMEOUT, DEFAULT_CHANNEL_CLOSE_TIMEOUT, DEFAULT_DISCONNECT_TIMEOUT, DEFAULT_IDLE_TIMEOUT, DEFAULT_IGNORE_MESSAGE_FREQUENCY, DEFAULT_IGNORE_MESSAGE_SIZE, DEFAULT_IGNORE_MESSAGE_VARIANCE, DEFAULT_LIMIT_PACKET_SIZE, DEFAULT_MAX_IDENTIFICATION_SIZE, DEFAULT_MAX_PACKET_SIZE, DEFAULT_NIO_WORKERS, DEFAULT_NIO2_MIN_WRITE_TIMEOUT, DEFAULT_NIO2_READ_TIMEOUT, DEFAULT_REKEY_BYTES_LIMIT, DEFAULT_REKEY_PACKETS_LIMIT, DEFAULT_REKEY_TIME_LIMIT, DEFAULT_STOP_WAIT_TIME, DEFAULT_VERSION, DEFAULT_WINDOW_SIZE, DEFAULT_WINDOW_TIMEOUT, DISCONNECT_TIMEOUT, IDLE_TIMEOUT, IGNORE_MESSAGE_FREQUENCY, IGNORE_MESSAGE_SIZE, IGNORE_MESSAGE_VARIANCE, LIMIT_PACKET_SIZE, MAX_IDENTIFICATION_SIZE, MAX_PACKET_SIZE, NIO_WORKERS, NIO2_MIN_WRITE_TIMEOUT, NIO2_READ_BUFFER_SIZE, NIO2_READ_TIMEOUT, REKEY_BLOCKS_LIMIT, REKEY_BYTES_LIMIT, REKEY_PACKETS_LIMIT, REKEY_TIME_LIMIT, SOCKET_BACKLOG, SOCKET_KEEPALIVE, SOCKET_LINGER, SOCKET_RCVBUF, SOCKET_REUSEADDR, SOCKET_SNDBUF, STOP_WAIT_TIME, TCP_NODELAY, WINDOW_SIZE, WINDOW_TIMEOUT
NONE
EMPTY
DEFAULT_PASSWORD_PROMPTS, PASSWORD_PROMPTS, PREFERRED_AUTHS
CLOSE_WAIT_TIMEOUT, DEFAULT_CLOSE_WAIT_TIMEOUT
Constructor and Description |
---|
SshClient() |
addChannelListener, addPortForwardingEventListener, addSessionListener, createSessionTimeoutListener, getAgentFactory, getAttribute, getChannelFactories, getChannelListenerProxy, getChannelStreamPacketWriterResolver, getFileSystemFactory, getForwarderFactory, getForwardingFilter, getGlobalRequestHandlers, getIoServiceEventListener, getIoServiceFactory, getIoServiceFactoryFactory, getNioWorkers, getParentPropertyResolver, getPortForwardingEventListenerProxy, getProperties, getRandomFactory, getReservedSessionMessagesHandler, getScheduledExecutorService, getServiceFactories, getSessionListenerProxy, getUnknownChannelReferenceHandler, getVersion, removeAttribute, removeChannelListener, removePortForwardingEventListener, removeSessionListener, removeSessionTimeout, resolveUnknownChannelReferenceHandler, setAgentFactory, setAttribute, setChannelFactories, setChannelStreamPacketWriterResolver, setFileSystemFactory, setForwarderFactory, setForwardingFilter, setGlobalRequestHandlers, setIoServiceEventListener, setIoServiceFactoryFactory, setNioWorkers, setParentPropertyResolver, setRandomFactory, setReservedSessionMessagesHandler, setScheduledExecutorService, setScheduledExecutorService, setServiceFactories, setUnknownChannelReferenceHandler, setupSessionTimeout, stopSessionTimeoutListener
getCipherFactories, getCompressionFactories, getKeyExchangeFactories, getKeyPairProvider, getMacFactories, getSignatureFactories, resolveEffectiveFactories, resolveEffectiveProvider, setCipherFactories, setCompressionFactories, setKeyExchangeFactories, setKeyPairProvider, setMacFactories, setSignatureFactories
doCloseGracefully, doCloseImmediately
addCloseFutureListener, builder, close, isClosed, isClosing, preClose, removeCloseFutureListener
getSimplifiedLogger
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getAgentFactory, getAgentForwardingFilter, getChannelFactories, getFileSystemFactory, getForwarderFactory, getForwardingFilter, getGlobalRequestHandlers, getIoServiceFactory, getRandomFactory, getScheduledExecutorService, getServiceFactories, getTcpForwardingFilter, getVersion, getX11ForwardingFilter, resolveAttribute, resolveAttribute
getCipherFactories, getCipherFactoriesNameList, getCipherFactoriesNames, getCompressionFactories, getCompressionFactoriesNameList, getCompressionFactoriesNames, getKeyExchangeFactories, getMacFactories, getMacFactoriesNameList, getMacFactoriesNames, setCipherFactories, setCipherFactoriesNameList, setCipherFactoriesNames, setCipherFactoriesNames, setCompressionFactories, setCompressionFactoriesNameList, setCompressionFactoriesNames, setCompressionFactoriesNames, setKeyExchangeFactories, setMacFactories, setMacFactoriesNameList, setMacFactoriesNames, setMacFactoriesNames
getKeyPairProvider, setKeyPairProvider
getSignatureFactories, getSignatureFactories, getSignatureFactoriesNameList, getSignatureFactoriesNames, resolveSignatureFactories, setSignatureFactories, setSignatureFactoriesNameList, setSignatureFactoriesNames, setSignatureFactoriesNames
addSessionListener, getSessionListenerProxy, removeSessionListener
getReservedSessionMessagesHandler, setReservedSessionMessagesHandler
addChannelListener, getChannelListenerProxy, removeChannelListener
getChannelStreamPacketWriterResolver, resolveChannelStreamPacketWriter, resolveChannelStreamPacketWriterResolver, setChannelStreamPacketWriterResolver
getUnknownChannelReferenceHandler, resolveUnknownChannelReferenceHandler, setUnknownChannelReferenceHandler
addPortForwardingEventListener, getPortForwardingEventListenerProxy, removePortForwardingEventListener
getIoServiceEventListener, setIoServiceEventListener
getAttribute, removeAttribute, setAttribute
getBoolean, getBooleanProperty, getInteger, getIntProperty, getLong, getLongProperty, getObject, getParentPropertyResolver, getProperties, getString, getStringProperty
getUserAuthFactoriesNameList, getUserAuthFactoriesNames, setUserAuthFactoriesNameList, setUserAuthFactoriesNames, setUserAuthFactoriesNames
connect, connect, connect
addCloseFutureListener, close, close, close, getMaxCloseWaitTime, isClosed, isClosing, isOpen, removeCloseFutureListener
public static final List<NamedFactory<UserAuth>> DEFAULT_USER_AUTH_FACTORIES
public static final List<ServiceFactory> DEFAULT_SERVICE_FACTORIES
protected IoConnector connector
protected SessionFactory sessionFactory
protected UserInteraction userInteraction
protected List<NamedFactory<UserAuth>> userAuthFactories
public SessionFactory getSessionFactory()
public void setSessionFactory(SessionFactory sessionFactory)
public ClientProxyConnector getClientProxyConnector()
getClientProxyConnector
in interface ClientProxyConnectorHolder
public void setClientProxyConnector(ClientProxyConnector proxyConnector)
setClientProxyConnector
in interface ClientProxyConnectorHolder
public ServerKeyVerifier getServerKeyVerifier()
ClientAuthenticationManager
getServerKeyVerifier
in interface ClientAuthenticationManager
ServerKeyVerifier
to use - never null
public void setServerKeyVerifier(ServerKeyVerifier serverKeyVerifier)
setServerKeyVerifier
in interface ClientAuthenticationManager
public HostConfigEntryResolver getHostConfigEntryResolver()
getHostConfigEntryResolver
in interface ClientFactoryManager
HostConfigEntryResolver
to use in order to resolve the
effective session parameters - never null
public void setHostConfigEntryResolver(HostConfigEntryResolver resolver)
setHostConfigEntryResolver
in interface ClientFactoryManager
public FilePasswordProvider getFilePasswordProvider()
getFilePasswordProvider
in interface ClientFactoryManager
FilePasswordProvider
to use if need to load encrypted
identities keys - never null
FilePasswordProvider.EMPTY
public void setFilePasswordProvider(FilePasswordProvider provider)
setFilePasswordProvider
in interface ClientFactoryManager
public ClientIdentityLoader getClientIdentityLoader()
getClientIdentityLoader
in interface ClientFactoryManager
ClientIdentityLoader
to use in order to load client
key pair identities - never null
public void setClientIdentityLoader(ClientIdentityLoader loader)
setClientIdentityLoader
in interface ClientFactoryManager
public UserInteraction getUserInteraction()
getUserInteraction
in interface ClientAuthenticationManager
UserInteraction
object to communicate with the user
(may be null
to indicate that no such communication is allowed)public void setUserInteraction(UserInteraction userInteraction)
setUserInteraction
in interface ClientAuthenticationManager
public List<NamedFactory<UserAuth>> getUserAuthFactories()
getUserAuthFactories
in interface ClientAuthenticationManager
List
of UserAuth
NamedFactory
-ies - never
null
/emptypublic void setUserAuthFactories(List<NamedFactory<UserAuth>> userAuthFactories)
setUserAuthFactories
in interface ClientAuthenticationManager
public AuthenticationIdentitiesProvider getRegisteredIdentities()
getRegisteredIdentities
in interface ClientAuthenticationManager
AuthenticationIdentitiesProvider
to be used for attempting
password or public key authenticationpublic PasswordIdentityProvider getPasswordIdentityProvider()
ClientAuthenticationManager
PasswordIdentityProvider
used to provide password
candidatesgetPasswordIdentityProvider
in interface ClientAuthenticationManager
PasswordIdentityProvider
instance - ignored if null
(i.e., no passwords available)public void setPasswordIdentityProvider(PasswordIdentityProvider provider)
setPasswordIdentityProvider
in interface ClientAuthenticationManager
public void addPasswordIdentity(String password)
addPasswordIdentity
in interface ClientAuthenticationManager
password
- Password to be added - may not be null
/empty.
Note: this password is in addition to whatever passwords
are available via the PasswordIdentityProvider
(if any)public String removePasswordIdentity(String password)
removePasswordIdentity
in interface ClientAuthenticationManager
password
- The password to remove - ignored if null
/emptyClientAuthenticationManager.addPasswordIdentity(String)
- or null
if no
match foundpublic void addPublicKeyIdentity(KeyPair kp)
addPublicKeyIdentity
in interface ClientAuthenticationManager
kp
- The KeyPair
to add - may not be null
Note: this key is in addition to whatever keys
are available via the KeyIdentityProvider
(if any)public KeyPair removePublicKeyIdentity(KeyPair kp)
removePublicKeyIdentity
in interface ClientAuthenticationManager
kp
- The KeyPair
to remove - ignored if null
KeyPair
- same one that was added via
ClientAuthenticationManager.addPublicKeyIdentity(KeyPair)
- or null
if no
match foundprotected void checkConfig()
checkConfig
in class AbstractFactoryManager
public boolean isStarted()
public void start()
started
.public void stop()
public void open() throws IOException
IOException
protected Closeable getInnerCloseable()
getInnerCloseable
in class AbstractInnerCloseable
public ConnectFuture connect(String username, String host, int port, SocketAddress localAddress) throws IOException
ClientSessionCreator
HostConfigEntry
and connects to itconnect
in interface ClientSessionCreator
username
- The intended usernamehost
- The target host name/address - never null
/emptyport
- The target portlocalAddress
- The local address to use - if null
an
automatic ephemeral port and bind address is usedConnectFuture
IOException
- If failed to resolve the effective target or
connect to itClientSessionCreator.connect(HostConfigEntry)
public ConnectFuture connect(String username, SocketAddress targetAddress, SocketAddress localAddress) throws IOException
ClientSessionCreator
HostConfigEntry
and connects to itconnect
in interface ClientSessionCreator
username
- The intended usernametargetAddress
- The intended target SocketAddress
- never null
.
If this is an InetSocketAddress
then the effective
HostConfigEntry
is resolved and used.localAddress
- The local address to use - if null
an
automatic ephemeral port and bind address is usedConnectFuture
IOException
- If failed to resolve the effective target or
connect to itClientSessionCreator.connect(HostConfigEntry)
public ConnectFuture connect(HostConfigEntry hostConfig, SocketAddress localAddress) throws IOException
connect
in interface ClientSessionCreator
hostConfig
- The effective HostConfigEntry
to connect to - never null
localAddress
- The local address to use - if null
an
automatic ephemeral port and bind address is usedConnectFuture
IOException
- If failed to create the connection futureprotected List<KeyPair> loadClientIdentities(Collection<String> locations, LinkOption... options) throws IOException
IOException
protected ConnectFuture doConnect(String username, SocketAddress targetAddress, SocketAddress localAddress, Collection<? extends KeyPair> identities, boolean useDefaultIdentities) throws IOException
IOException
protected SshFutureListener<IoConnectFuture> createConnectCompletionListener(ConnectFuture connectFuture, String username, SocketAddress address, Collection<? extends KeyPair> identities, boolean useDefaultIdentities)
protected void onConnectOperationComplete(IoSession ioSession, ConnectFuture connectFuture, String username, SocketAddress address, Collection<? extends KeyPair> identities, boolean useDefaultIdentities)
protected void setupDefaultSessionIdentities(ClientSession session)
protected IoConnector createConnector()
protected SessionFactory createSessionFactory()
public static SimpleClient setUpDefaultSimpleClient()
SimpleClient
SimpleClient
wrapper. Note: when the wrapper
is closed the client is also stoppedsetUpDefaultClient()
,
wrapAsSimpleClient(SshClient)
public static SimpleClient wrapAsSimpleClient(SshClient client)
SshClient
instance as a SimpleClient
client
- The client instance - never null
. Note:
client must be started before the simple client wrapper is used.SimpleClient
wrapper. Note: when the
wrapper is closed the client is also stoppedpublic static SshClient setUpDefaultClient()
public static <C extends SshClient> C setKeyPairProvider(C client, boolean strict, boolean supportedOnly, FilePasswordProvider provider, LinkOption... options) throws IOException, GeneralSecurityException
C
- The generic client classclient
- The SshClient
to updatedstrict
- If true
then files that do not have the required
access rights are excluded from considerationsupportedOnly
- If true
then ignore identities that are not
supported internallyprovider
- A FilePasswordProvider
- may be null
if the loaded keys are guaranteed not to be encrypted. The argument
to FilePasswordProvider.getPassword(String)
is the path of the
file whose key is to be loadedoptions
- The LinkOption
s to apply when checking
for existencenull
KeyPairProvider
was generatedIOException
- If failed to access the file systemGeneralSecurityException
- If failed to load the keyssetKeyPairProvider(SshClient, Path, boolean, boolean, FilePasswordProvider, LinkOption...)
public static <C extends SshClient> C setKeyPairProvider(C client, Path dir, boolean strict, boolean supportedOnly, FilePasswordProvider provider, LinkOption... options) throws IOException, GeneralSecurityException
C
- The generic client classclient
- The SshClient
to updateddir
- The folder to scan for the built-in identitiesstrict
- If true
then files that do not have the required
access rights are excluded from considerationsupportedOnly
- If true
then ignore identities that are not
supported internallyprovider
- A FilePasswordProvider
- may be null
if the loaded keys are guaranteed not to be encrypted. The argument
to FilePasswordProvider.getPassword(String)
is the path of the
file whose key is to be loadedoptions
- The LinkOption
s to apply when checking
for existencenull
KeyPairProvider
was generatedIOException
- If failed to access the file systemGeneralSecurityException
- If failed to load the keysClientIdentity.loadDefaultKeyPairProvider(Path, boolean, boolean, FilePasswordProvider, LinkOption...)
Copyright © 2008–2018 The Apache Software Foundation. All rights reserved.