Class JGitSshClient

java.lang.Object
org.apache.sshd.common.util.logging.AbstractLoggingBean
org.apache.sshd.common.util.closeable.IoBaseCloseable
org.apache.sshd.common.util.closeable.AbstractCloseable
org.apache.sshd.common.util.closeable.AbstractInnerCloseable
org.apache.sshd.common.kex.AbstractKexFactoryManager
org.apache.sshd.common.helpers.AbstractFactoryManager
org.apache.sshd.client.SshClient
org.eclipse.jgit.internal.transport.sshd.JGitSshClient
All Implemented Interfaces:
Closeable, AutoCloseable, Channel, org.apache.sshd.client.ClientAuthenticationManager, org.apache.sshd.client.ClientFactoryManager, org.apache.sshd.client.config.keys.ClientIdentityLoaderHolder, org.apache.sshd.client.config.keys.ClientIdentityLoaderManager, org.apache.sshd.client.session.ClientProxyConnectorHolder, org.apache.sshd.client.session.ClientSessionCreator, org.apache.sshd.common.AttributeRepository, org.apache.sshd.common.AttributeStore, org.apache.sshd.common.auth.UserAuthFactoriesManager<org.apache.sshd.client.session.ClientSession,org.apache.sshd.client.auth.UserAuth,org.apache.sshd.client.auth.UserAuthFactory>, org.apache.sshd.common.channel.ChannelListenerManager, org.apache.sshd.common.channel.throttle.ChannelStreamWriterResolver, org.apache.sshd.common.channel.throttle.ChannelStreamWriterResolverManager, org.apache.sshd.common.Closeable, org.apache.sshd.common.config.keys.FilePasswordProviderHolder, org.apache.sshd.common.config.keys.FilePasswordProviderManager, org.apache.sshd.common.FactoryManager, org.apache.sshd.common.forward.PortForwardingEventListenerManager, org.apache.sshd.common.io.IoServiceEventListenerManager, org.apache.sshd.common.kex.extension.KexExtensionHandlerManager, org.apache.sshd.common.kex.KexFactoryManager, org.apache.sshd.common.keyprovider.KeyIdentityProviderHolder, org.apache.sshd.common.PropertyResolver, org.apache.sshd.common.session.ReservedSessionMessagesManager, org.apache.sshd.common.session.SessionDisconnectHandlerManager, org.apache.sshd.common.session.SessionHeartbeatController, org.apache.sshd.common.session.SessionListenerManager, org.apache.sshd.common.session.UnknownChannelReferenceHandlerManager, org.apache.sshd.common.signature.SignatureFactoriesHolder, org.apache.sshd.common.signature.SignatureFactoriesManager

public class JGitSshClient extends org.apache.sshd.client.SshClient
Customized SshClient for JGit. It creates specialized JGitClientSessions that know about the HostConfigEntry they were created for, and it loads all KeyPair identities lazily.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    private static class 
    A KeyIdentityProvider that iterates over the Iterables returned by other KeyIdentityProviders.
    private static class 
    A SessionFactory to create our own specialized JGitClientSessions.

    Nested classes/interfaces inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable

    org.apache.sshd.common.util.closeable.AbstractCloseable.State

    Nested classes/interfaces inherited from interface org.apache.sshd.common.AttributeRepository

    org.apache.sshd.common.AttributeRepository.AttributeKey<T>

    Nested classes/interfaces inherited from interface org.apache.sshd.common.session.SessionHeartbeatController

    org.apache.sshd.common.session.SessionHeartbeatController.HeartbeatType
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
     
    (package private) static final org.apache.sshd.common.AttributeRepository.AttributeKey<org.apache.sshd.client.config.hosts.HostConfigEntry>
    We need access to this during the constructor of the ClientSession, before setConnectAddress() can have been called.
    private KeyCache
     
    static final org.apache.sshd.common.AttributeRepository.AttributeKey<org.apache.sshd.common.util.net.SshdSocketAddress>
    An attribute key for storing an alternate local address to connect to if a local forward from a ProxyJump ssh config is present.
    (package private) static final org.apache.sshd.common.AttributeRepository.AttributeKey<InetSocketAddress>
     
    static final org.apache.sshd.common.AttributeRepository.AttributeKey<String>
    An attribute key for the comma-separated list of default preferred authentication mechanisms.
     

    Fields inherited from class org.apache.sshd.client.SshClient

    connector, DEFAULT_SERVICE_FACTORIES, DEFAULT_SSH_CLIENT_FACTORY, DEFAULT_USER_AUTH_FACTORIES, sessionFactory, userAuthFactories

    Fields inherited from class org.apache.sshd.common.helpers.AbstractFactoryManager

    agentFactory, channelFactories, channelListenerProxy, channelListeners, executor, fileSystemFactory, forwarderFactory, forwardingFilter, globalRequestHandlers, ioServiceFactory, ioServiceFactoryFactory, randomFactory, serviceFactories, sessionListenerProxy, sessionListeners, sessionTimeoutListener, shutdownExecutor, timeoutListenerFuture, tunnelListenerProxy, tunnelListeners

    Fields inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable

    closeFuture, futureLock, state

    Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean

    log

    Fields inherited from interface org.apache.sshd.common.channel.throttle.ChannelStreamWriterResolver

    NONE

    Fields inherited from interface org.apache.sshd.client.session.ClientSessionCreator

    TARGET_SERVER

    Fields inherited from interface org.apache.sshd.common.FactoryManager

    DEFAULT_VERSION

    Fields inherited from interface org.apache.sshd.common.PropertyResolver

    EMPTY
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    private org.apache.sshd.common.AttributeRepository
    chain(org.apache.sshd.common.AttributeRepository self, org.apache.sshd.common.AttributeRepository parent)
     
    configureProxy(ProxyData proxyData, InetSocketAddress remoteAddress)
     
    org.apache.sshd.client.future.ConnectFuture
    connect(org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig, org.apache.sshd.common.AttributeRepository context, SocketAddress localAddress)
     
    private org.apache.sshd.common.future.SshFutureListener<org.apache.sshd.common.io.IoConnectFuture>
    createConnectCompletionListener(org.apache.sshd.client.future.ConnectFuture connectFuture, String username, InetSocketAddress address, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig)
     
    createSession(org.apache.sshd.common.io.IoSession ioSession, String username, InetSocketAddress address, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig)
     
    protected org.apache.sshd.client.session.SessionFactory
     
    Retrieves the CredentialsProvider set for this client.
    private int
    getNumberOfPasswordPrompts(org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig)
     
    private ProxyData
     
    Retrieves the ProxyDataFactory.
    private org.apache.sshd.common.AttributeRepository
    sessionAttributes(org.apache.sshd.common.AttributeRepository parent, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig, InetSocketAddress originalAddress)
     
    void
    Sets the CredentialsProvider for this client.
    void
    Set a cache for loaded keys.
    void
    Sets a ProxyDataFactory for connecting through proxies.

    Methods inherited from class org.apache.sshd.client.SshClient

    addPasswordIdentity, addPublicKeyIdentity, checkConfig, connect, connect, connect, createConnectCompletionListener, createConnector, doConnect, doConnect, ensureFilePasswordProvider, getClientIdentityLoader, getClientProxyConnector, getFilePasswordProvider, getHostBasedAuthenticationReporter, getHostConfigEntryResolver, getInnerCloseable, getKeyIdentityProvider, getPasswordAuthenticationReporter, getPasswordIdentityProvider, getPublicKeyAuthenticationReporter, getRegisteredIdentities, getServerKeyVerifier, getSessionFactory, getUserAuthFactories, getUserInteraction, isStarted, onConnectOperationComplete, open, parseProxyJumps, parseProxyJumps, preloadClientIdentities, removePasswordIdentity, removePublicKeyIdentity, resolveHost, setClientIdentityLoader, setClientProxyConnector, setFilePasswordProvider, setHostBasedAuthenticationReporter, setHostConfigEntryResolver, setKeyIdentityProvider, setKeyPairProvider, setKeyPairProvider, setPasswordAuthenticationReporter, setPasswordIdentityProvider, setPublicKeyAuthenticationReporter, setServerKeyVerifier, setSessionFactory, setUpDefaultClient, setupDefaultSessionIdentities, setUpDefaultSimpleClient, setUserAuthFactories, setUserInteraction, start, stop, toString, wrapAsSimpleClient

    Methods inherited from class org.apache.sshd.common.helpers.AbstractFactoryManager

    addChannelListener, addPortForwardingEventListener, addSessionListener, attributeKeys, clearAttributes, computeAttributeIfAbsent, createSessionTimeoutListener, getAgentFactory, getAttribute, getAttributesCount, getChannelFactories, getChannelListenerProxy, getChannelStreamWriterResolver, getFileSystemFactory, getForwarderFactory, getForwardingFilter, getGlobalRequestHandlers, getIoServiceEventListener, getIoServiceFactory, getIoServiceFactoryFactory, getNioWorkers, getParentPropertyResolver, getPortForwardingEventListenerProxy, getProperties, getRandomFactory, getReservedSessionMessagesHandler, getScheduledExecutorService, getServiceFactories, getSessionDisconnectHandler, getSessionListenerProxy, getUnknownChannelReferenceHandler, getVersion, removeAttribute, removeChannelListener, removePortForwardingEventListener, removeSessionListener, removeSessionTimeout, resolveUnknownChannelReferenceHandler, setAgentFactory, setAttribute, setChannelFactories, setChannelStreamWriterResolver, setFileSystemFactory, setForwarderFactory, setForwardingFilter, setGlobalRequestHandlers, setIoServiceEventListener, setIoServiceFactoryFactory, setNioWorkers, setParentPropertyResolver, setRandomFactory, setReservedSessionMessagesHandler, setScheduledExecutorService, setScheduledExecutorService, setServiceFactories, setSessionDisconnectHandler, setUnknownChannelReferenceHandler, setupSessionTimeout, stopSessionTimeoutListener

    Methods inherited from class org.apache.sshd.common.kex.AbstractKexFactoryManager

    getCipherFactories, getCompressionFactories, getDelegate, getKexExtensionHandler, getKeyExchangeFactories, getMacFactories, getSignatureFactories, resolveEffectiveFactories, resolveEffectiveProvider, setCipherFactories, setCompressionFactories, setKexExtensionHandler, setKeyExchangeFactories, setMacFactories, setSignatureFactories

    Methods inherited from class org.apache.sshd.common.util.closeable.AbstractInnerCloseable

    doCloseGracefully, doCloseImmediately

    Methods inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable

    addCloseFutureListener, builder, close, getFutureLock, isClosed, isClosing, preClose, removeCloseFutureListener

    Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean

    debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.apache.sshd.common.AttributeRepository

    attributeKeys, getAttribute, getAttributesCount

    Methods inherited from interface org.apache.sshd.common.AttributeStore

    clearAttributes, computeAttributeIfAbsent, removeAttribute, setAttribute

    Methods inherited from interface org.apache.sshd.common.channel.ChannelListenerManager

    addChannelListener, getChannelListenerProxy, removeChannelListener

    Methods inherited from interface org.apache.sshd.common.channel.throttle.ChannelStreamWriterResolverManager

    getChannelStreamWriterResolver, resolveChannelStreamWriter, resolveChannelStreamWriterResolver, setChannelStreamWriterResolver

    Methods inherited from interface org.apache.sshd.client.ClientAuthenticationManager

    setUserAuthFactoriesNames

    Methods inherited from interface org.apache.sshd.client.session.ClientSessionCreator

    connect, connect, connect, connect, connect, connect, connect, connect, connect

    Methods inherited from interface org.apache.sshd.common.Closeable

    close, isOpen

    Methods inherited from interface org.apache.sshd.common.FactoryManager

    getAgentFactory, getAgentForwardingFilter, getChannelFactories, getFileSystemFactory, getForwarderFactory, getForwardingFilter, getGlobalRequestHandlers, getIoServiceFactory, getRandomFactory, getScheduledExecutorService, getServiceFactories, getTcpForwardingFilter, getVersion, getX11ForwardingFilter, resolveAttribute

    Methods inherited from interface org.apache.sshd.common.io.IoServiceEventListenerManager

    getIoServiceEventListener, setIoServiceEventListener

    Methods inherited from interface org.apache.sshd.common.kex.extension.KexExtensionHandlerManager

    getKexExtensionHandler, setKexExtensionHandler

    Methods inherited from interface org.apache.sshd.common.kex.KexFactoryManager

    getCipherFactories, getCipherFactoriesNameList, getCipherFactoriesNames, getCompressionFactories, getCompressionFactoriesNameList, getCompressionFactoriesNames, getKeyExchangeFactories, getMacFactories, getMacFactoriesNameList, getMacFactoriesNames, setCipherFactories, setCipherFactoriesNameList, setCipherFactoriesNames, setCipherFactoriesNames, setCompressionFactories, setCompressionFactoriesNameList, setCompressionFactoriesNames, setCompressionFactoriesNames, setKeyExchangeFactories, setMacFactories, setMacFactoriesNameList, setMacFactoriesNames, setMacFactoriesNames

    Methods inherited from interface org.apache.sshd.common.forward.PortForwardingEventListenerManager

    addPortForwardingEventListener, getPortForwardingEventListenerProxy, removePortForwardingEventListener

    Methods inherited from interface org.apache.sshd.common.PropertyResolver

    getBoolean, getBooleanProperty, getCharset, getInteger, getIntProperty, getLong, getLongProperty, getObject, getParentPropertyResolver, getProperties, getString, getStringProperty, isEmpty

    Methods inherited from interface org.apache.sshd.common.session.ReservedSessionMessagesManager

    getReservedSessionMessagesHandler, setReservedSessionMessagesHandler

    Methods inherited from interface org.apache.sshd.common.session.SessionDisconnectHandlerManager

    getSessionDisconnectHandler, setSessionDisconnectHandler

    Methods inherited from interface org.apache.sshd.common.session.SessionHeartbeatController

    disableSessionHeartbeat, getSessionHeartbeatInterval, getSessionHeartbeatType, setSessionHeartbeat, setSessionHeartbeat

    Methods inherited from interface org.apache.sshd.common.session.SessionListenerManager

    addSessionListener, getSessionListenerProxy, removeSessionListener

    Methods inherited from interface org.apache.sshd.common.signature.SignatureFactoriesHolder

    getSignatureFactories, getSignatureFactoriesNameList, getSignatureFactoriesNames

    Methods inherited from interface org.apache.sshd.common.signature.SignatureFactoriesManager

    setSignatureFactories, setSignatureFactoriesNameList, setSignatureFactoriesNames, setSignatureFactoriesNames

    Methods inherited from interface org.apache.sshd.common.session.UnknownChannelReferenceHandlerManager

    getUnknownChannelReferenceHandler, resolveUnknownChannelReferenceHandler, setUnknownChannelReferenceHandler

    Methods inherited from interface org.apache.sshd.common.auth.UserAuthFactoriesManager

    getUserAuthFactoriesNameList, getUserAuthFactoriesNames, setUserAuthFactoriesNameList, setUserAuthFactoriesNames
  • Field Details

    • HOST_CONFIG_ENTRY

      static final org.apache.sshd.common.AttributeRepository.AttributeKey<org.apache.sshd.client.config.hosts.HostConfigEntry> HOST_CONFIG_ENTRY
      We need access to this during the constructor of the ClientSession, before setConnectAddress() can have been called. So we have to remember it in an attribute on the SshClient, from where we can then retrieve it.
    • ORIGINAL_REMOTE_ADDRESS

      static final org.apache.sshd.common.AttributeRepository.AttributeKey<InetSocketAddress> ORIGINAL_REMOTE_ADDRESS
    • PREFERRED_AUTHENTICATIONS

      public static final org.apache.sshd.common.AttributeRepository.AttributeKey<String> PREFERRED_AUTHENTICATIONS
      An attribute key for the comma-separated list of default preferred authentication mechanisms.
    • LOCAL_FORWARD_ADDRESS

      public static final org.apache.sshd.common.AttributeRepository.AttributeKey<org.apache.sshd.common.util.net.SshdSocketAddress> LOCAL_FORWARD_ADDRESS
      An attribute key for storing an alternate local address to connect to if a local forward from a ProxyJump ssh config is present. If set, connect(HostConfigEntry, AttributeRepository, SocketAddress) will not connect to the address obtained from the HostConfigEntry but to the address stored in this key (which is assumed to forward the HostConfigEntry address).
    • keyCache

      private KeyCache keyCache
    • credentialsProvider

      private CredentialsProvider credentialsProvider
    • proxyDatabase

      private ProxyDataFactory proxyDatabase
  • Constructor Details

    • JGitSshClient

      public JGitSshClient()
  • Method Details

    • createSessionFactory

      protected org.apache.sshd.client.session.SessionFactory createSessionFactory()
      Overrides:
      createSessionFactory in class org.apache.sshd.client.SshClient
    • connect

      public org.apache.sshd.client.future.ConnectFuture connect(org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig, org.apache.sshd.common.AttributeRepository context, SocketAddress localAddress) throws IOException
      Specified by:
      connect in interface org.apache.sshd.client.session.ClientSessionCreator
      Overrides:
      connect in class org.apache.sshd.client.SshClient
      Throws:
      IOException
    • chain

      private org.apache.sshd.common.AttributeRepository chain(org.apache.sshd.common.AttributeRepository self, org.apache.sshd.common.AttributeRepository parent)
    • sessionAttributes

      private org.apache.sshd.common.AttributeRepository sessionAttributes(org.apache.sshd.common.AttributeRepository parent, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig, InetSocketAddress originalAddress)
    • getProxyData

      private ProxyData getProxyData(InetSocketAddress remoteAddress)
    • configureProxy

      private InetSocketAddress configureProxy(ProxyData proxyData, InetSocketAddress remoteAddress)
    • createConnectCompletionListener

      private org.apache.sshd.common.future.SshFutureListener<org.apache.sshd.common.io.IoConnectFuture> createConnectCompletionListener(org.apache.sshd.client.future.ConnectFuture connectFuture, String username, InetSocketAddress address, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig)
    • createSession

      private JGitClientSession createSession(org.apache.sshd.common.io.IoSession ioSession, String username, InetSocketAddress address, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig)
    • getNumberOfPasswordPrompts

      private int getNumberOfPasswordPrompts(org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig)
    • setKeyCache

      public void setKeyCache(KeyCache cache)
      Set a cache for loaded keys. Newly discovered keys will be added when IdentityFile host entries from the ssh config file are used during session authentication.
      Parameters:
      cache - to use
    • setProxyDatabase

      public void setProxyDatabase(ProxyDataFactory factory)
      Sets a ProxyDataFactory for connecting through proxies.
      Parameters:
      factory - to use, or null if proxying is not desired or supported
    • getProxyDatabase

      protected ProxyDataFactory getProxyDatabase()
      Retrieves the ProxyDataFactory.
      Returns:
      the factory, or null if none is set
    • setCredentialsProvider

      public void setCredentialsProvider(CredentialsProvider provider)
      Sets the CredentialsProvider for this client.
      Parameters:
      provider - to set
    • getCredentialsProvider

      public CredentialsProvider getCredentialsProvider()
      Retrieves the CredentialsProvider set for this client.
      Returns:
      the provider, or null if none is set.