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
connect(String, String, int)
or 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
SignatureFactoriesManager.Utils
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, globalRequestHandlers, ioServiceFactory, ioServiceFactoryFactory, randomFactory, serviceFactories, sessionListenerProxy, sessionListeners, sessionTimeoutListener, shutdownExecutor, tcpipForwarderFactory, tcpipForwardingFilter, timeoutListenerFuture
closeFuture, lock, state
log
DEFAULT_HEARTBEAT_INTERVAL, DEFAULT_IGNORE_INVALID_IDENTITIES, DEFAULT_KEEP_ALIVE_HEARTBEAT_STRING, HEARTBEAT_INTERVAL, HEARTBEAT_REQUEST, IGNORE_INVALID_IDENTITIES
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_MAX_PACKET_SIZE, DEFAULT_NIO_WORKERS, DEFAULT_REKEY_BYTES_LIMIT, DEFAULT_REKEY_PACKETS_LIMIT, DEFAULT_REKEY_TIME_LIMIT, DEFAULT_VERSION, DEFAULT_WINDOW_SIZE, DEFAULT_WINDOW_TIMEOUT, DISCONNECT_TIMEOUT, IDLE_TIMEOUT, IGNORE_MESSAGE_FREQUENCY, IGNORE_MESSAGE_SIZE, IGNORE_MESSAGE_VARIANCE, MAX_PACKET_SIZE, NIO_WORKERS, NIO2_READ_BUFFER_SIZE, REKEY_BLOCKS_LIMIT, REKEY_BYTES_LIMIT, REKEY_PACKETS_LIMIT, REKEY_TIME_LIMIT, SOCKET_BACKLOG, SOCKET_KEEPALIVE, SOCKET_LINGER, SOCKET_RCVBUF, SOCKET_REUSEADDR, SOCKET_SNDBUF, TCP_NODELAY, WINDOW_SIZE, WINDOW_TIMEOUT
DEFAULT_PASSWORD_PROMPTS, PASSWORD_PROMPTS, PREFERRED_AUTHS
Constructor and Description |
---|
SshClient() |
addChannelListener, addSessionListener, createSessionTimeoutListener, getAgentFactory, getChannelFactories, getChannelListenerProxy, getFileSystemFactory, getGlobalRequestHandlers, getIoServiceFactory, getIoServiceFactoryFactory, getNioWorkers, getParentPropertyResolver, getProperties, getRandomFactory, getScheduledExecutorService, getServiceFactories, getSessionListenerProxy, getTcpipForwarderFactory, getTcpipForwardingFilter, getVersion, removeChannelListener, removeSessionListener, removeSessionTimeout, setAgentFactory, setChannelFactories, setFileSystemFactory, setGlobalRequestHandlers, setIoServiceFactoryFactory, setNioWorkers, setRandomFactory, setScheduledExecutorService, setScheduledExecutorService, setServiceFactories, setTcpipForwarderFactory, setTcpipForwardingFilter, setupSessionTimeout, stopSessionTimeoutListener
getCipherFactories, getCompressionFactories, getKeyExchangeFactories, getKeyPairProvider, getMacFactories, getSignatureFactories, resolveEffectiveFactories, resolveEffectiveProvider, setCipherFactories, setCompressionFactories, setKeyExchangeFactories, setKeyPairProvider, setMacFactories, setSignatureFactories
doCloseGracefully, doCloseImmediately
builder, close, isClosed, isClosing, preClose
close, isOpen
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getAgentFactory, getChannelFactories, getFileSystemFactory, getGlobalRequestHandlers, getIoServiceFactory, getRandomFactory, getScheduledExecutorService, getServiceFactories, getTcpipForwarderFactory, getTcpipForwardingFilter, getVersion
getCipherFactories, getCompressionFactories, getKeyExchangeFactories, getMacFactories, setCipherFactories, setCompressionFactories, setKeyExchangeFactories, setMacFactories
getKeyPairProvider, setKeyPairProvider
getSignatureFactories, setSignatureFactories
addSessionListener, getSessionListenerProxy, removeSessionListener
addChannelListener, getChannelListenerProxy, removeChannelListener
getParentPropertyResolver, getProperties
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 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
public PasswordIdentityProvider getPasswordIdentityProvider()
getPasswordIdentityProvider
in interface ClientAuthenticationManager
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 void start()
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) 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 portConnectFuture
IOException
- If failed to resolve the effective target or
connect to itClientSessionCreator.connect(HostConfigEntry)
public ConnectFuture connect(String username, SocketAddress address) throws IOException
ClientSessionCreator
HostConfigEntry
and connects to itconnect
in interface ClientSessionCreator
username
- The intended usernameaddress
- The intended SocketAddress
- never null
. If
this is an InetSocketAddress
then the effective HostConfigEntry
is resolved and used.ConnectFuture
IOException
- If failed to resolve the effective target or
connect to itClientSessionCreator.connect(HostConfigEntry)
public ConnectFuture connect(HostConfigEntry hostConfig) throws IOException
connect
in interface ClientSessionCreator
hostConfig
- The effective HostConfigEntry
to connect to - never null
ConnectFuture
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 address, 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 boolean showError(PrintStream stderr, String message)
public static ClientSession setupClientSession(String portOption, BufferedReader stdin, PrintStream stdout, PrintStream stderr, String... args) throws Exception
Exception
public static OutputStream resolveLoggingTargetStream(PrintStream stdout, PrintStream stderr, String... args)
public static OutputStream resolveLoggingTargetStream(PrintStream stdout, PrintStream stderr, String[] args, int maxIndex)
public static Handler setupLogging(Level level, PrintStream stdout, PrintStream stderr, OutputStream outputStream)
Copyright © 2008–2016 The Apache Software Foundation. All rights reserved.