org.eclipse.jgit.transport

## Class JschConfigSessionFactory

- java.lang.Object
- - org.eclipse.jgit.transport.SshSessionFactory
  - - org.eclipse.jgit.transport.JschConfigSessionFactory

    public abstract class JschConfigSessionFactory
    extends SshSessionFactory

The base session factory that loads known hosts and private keys from `$HOME/.ssh`.

This is the default implementation used by JGit and provides most of the compatibility necessary to match OpenSSH, a popular implementation of SSH used by C Git.

The factory does not provide UI behavior. Override the method `configure(org.eclipse.jgit.transport.OpenSshConfig.Host, Session)` to supply appropriate `UserInfo` to the session.

### Constructor Summary

Constructors
Constructor and Description
`JschConfigSessionFactory()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`protected abstract void` `configure(OpenSshConfig.Host hc, com.jcraft.jsch.Session session)` Provide additional configuration for the session based on the host information.
`protected com.jcraft.jsch.JSch` `createDefaultJSch(FS fs)`
`protected com.jcraft.jsch.Session` `createSession(OpenSshConfig.Host hc, String user, String host, int port, FS fs)` Create a new remote session for the requested address.
`protected com.jcraft.jsch.JSch` `getJSch(OpenSshConfig.Host hc, FS fs)` Obtain the JSch used to create new sessions.
`RemoteSession` `getSession(URIish uri, CredentialsProvider credentialsProvider, FS fs, int tms)` Open (or reuse) a session to a host.

### Methods inherited from class org.eclipse.jgit.transport.SshSessionFactory

`getInstance, releaseSession, setInstance`

### Methods inherited from class java.lang.Object

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

### Constructor Detail

#### JschConfigSessionFactory

    public JschConfigSessionFactory()

### Method Detail

#### getSession

    public RemoteSession getSession(URIish uri,
                                    CredentialsProvider credentialsProvider,
                                    FS fs,
                                    int tms)
                             throws TransportException

Description copied from class: `SshSessionFactory`
Open (or reuse) a session to a host.

A reasonable UserInfo that can interact with the end-user (if necessary) is installed on the returned session by this method.

The caller must connect the session by invoking `connect()` if it has not already been connected.

Specified by:
  `getSession` in class `SshSessionFactory`
Parameters:
  `uri` - URI information about the remote host
  `credentialsProvider` - provider to support authentication, may be null.
  `fs` - the file system abstraction which will be necessary to perform certain file system operations.
  `tms` - Timeout value, in milliseconds.
Returns:
  a session that can contact the remote host.
Throws:
  `TransportException` - the session could not be created.

#### createSession

    protected com.jcraft.jsch.Session createSession(OpenSshConfig.Host hc,
                                                    String user,
                                                    String host,
                                                    int port,
                                                    FS fs)
                                             throws com.jcraft.jsch.JSchException

Create a new remote session for the requested address.

Parameters:
  `hc` - host configuration
  `user` - login to authenticate as.
  `host` - server name to connect to.
  `port` - port number of the SSH daemon (typically 22).
  `fs` - the file system abstraction which will be necessary to perform certain file system operations.
Returns:
  new session instance, but otherwise unconfigured.
Throws:
  `com.jcraft.jsch.JSchException` - the session could not be created.

#### configure

    protected abstract void configure(OpenSshConfig.Host hc,
                                      com.jcraft.jsch.Session session)

Provide additional configuration for the session based on the host information. This method could be used to supply `UserInfo`.

Parameters:
  `hc` - host configuration
  `session` - session to configure

#### getJSch

    protected com.jcraft.jsch.JSch getJSch(OpenSshConfig.Host hc,
                                           FS fs)
                                    throws com.jcraft.jsch.JSchException

Obtain the JSch used to create new sessions.

Parameters:
  `hc` - host configuration
  `fs` - the file system abstraction which will be necessary to perform certain file system operations.
Returns:
  the JSch instance to use.
Throws:
  `com.jcraft.jsch.JSchException` - the user configuration could not be created.

#### createDefaultJSch

    protected com.jcraft.jsch.JSch createDefaultJSch(FS fs)
                                              throws com.jcraft.jsch.JSchException

Parameters:
  `fs` - the file system abstraction which will be necessary to perform certain file system operations.
Returns:
  the new default JSch implementation.
Throws:
  `com.jcraft.jsch.JSchException` - known host keys cannot be loaded.