Interface Transport

All Superinterfaces:
RemoteAddressProvider, SSHPacketHandler
All Known Implementing Classes:
TransportImpl

public interface Transport extends SSHPacketHandler, RemoteAddressProvider
Transport layer of the SSH protocol.
  • Method Details

    • init

      void init(String host, int port, InputStream in, OutputStream out) throws TransportException
      Sets the host information and the streams to be used by this transport. Identification information is exchanged with the server. A TransportException is thrown in case of SSH protocol version incompatibility.
      Parameters:
      host - server's hostname
      port - server's port
      in - input stream for the connection
      out - output stream for the connection
      Throws:
      TransportException - if there is an error during exchange of identification information
    • addHostKeyVerifier

      void addHostKeyVerifier(HostKeyVerifier hkv)
      Adds the specified verifier.
      Parameters:
      hkv - the host key verifier
    • addAlgorithmsVerifier

      void addAlgorithmsVerifier(AlgorithmsVerifier verifier)
      Adds the specified verifier.
      Parameters:
      verifier - The verifier to call with negotiated algorithms
    • doKex

      void doKex() throws TransportException
      Do key exchange and algorithm negotiation. This can be the initial one or for algorithm renegotiation.
      Throws:
      TransportException - if there was an error during key exchange
    • getClientVersion

      String getClientVersion()
      Returns:
      the version string used by this client to identify itself to an SSH server, e.g. "SSHJ_3_0"
    • getConfig

      Config getConfig()
      Returns:
      the Config associated with this transport.
    • getTimeoutMs

      int getTimeoutMs()
      Returns:
      the timeout that is currently set for blocking operations.
    • setTimeoutMs

      void setTimeoutMs(int timeout)
      Set a timeout for methods that may block.
      Parameters:
      timeout - the timeout in milliseconds
    • getRemoteHost

      String getRemoteHost()
      Returns:
      the hostname to which this transport is connected.
    • getRemotePort

      int getRemotePort()
      Returns:
      the port number on the remote host to which this transport is connected.
    • getServerVersion

      String getServerVersion()
      Returns the version string as sent by the SSH server for identification purposes, e.g. "OpenSSH_$version".

      If the transport has not yet been initialized via init(java.lang.String, int, java.io.InputStream, java.io.OutputStream), it will be null.

      Returns:
      server's version string (may be null)
    • getSessionID

      byte[] getSessionID()
      Returns:
      the session identifier assigned by server
    • getService

      Service getService()
      Returns:
      the currently active Service instance.
    • reqService

      void reqService(Service service) throws TransportException
      Request a SSH service represented by a Service instance. A separate call to setService(net.schmizz.sshj.Service) is not needed.
      Parameters:
      service - the SSH service to be requested
      Throws:
      TransportException - if the request failed for any reason
    • setService

      void setService(Service service)
      Sets the currently active Service. Handling of non-transport-layer packets is delegated to that service.

      For this method to be successful, at least one service request via reqService(net.schmizz.sshj.Service) must have been successful (not necessarily for the service being set).

      Parameters:
      service - (null-ok) the Service
    • isAuthenticated

      boolean isAuthenticated()
      Returns:
      whether the transport thinks it is authenticated.
    • setAuthenticated

      void setAuthenticated()
      Informs this transport that authentication has been completed. This method must be called after successful authentication, so that delayed compression may become effective if applicable.
    • sendUnimplemented

      long sendUnimplemented() throws TransportException
      Sends SSH_MSG_UNIMPLEMENTED in response to the last packet received.
      Returns:
      the sequence number of the packet sent
      Throws:
      TransportException - if an error occurred sending the packet
    • isRunning

      boolean isRunning()
      Returns:
      whether this transport is active.

      The transport is considered to be running if it has been initialized without error via init(java.lang.String, int, java.io.InputStream, java.io.OutputStream) and has not been disconnected.

    • join

      void join() throws TransportException
      Joins the thread calling this method to the transport's death.
      Throws:
      TransportException - if the transport dies of an exception
    • join

      void join(int timeout, TimeUnit unit) throws TransportException
      Joins the thread calling this method to the transport's death.
      Throws:
      TransportException - if the transport dies of an exception
    • disconnect

      void disconnect()
      Send a disconnection packet with reason as DisconnectReason.BY_APPLICATION, and closes this transport.
    • disconnect

      void disconnect(DisconnectReason reason)
      Send a disconnect packet with the given reason, and closes this transport.
      Parameters:
      reason - reason for disconnecting
    • disconnect

      void disconnect(DisconnectReason reason, String message)
      Send a disconnect packet with the given reason and message, and closes this transport.
      Parameters:
      reason - the reason code for this disconnect
      message - the text message
    • write

      long write(SSHPacket payload) throws TransportException
      Write a packet over this transport.

      The payload SSHPacket should have 5 bytes free at the beginning to avoid a performance penalty associated with making space for header bytes (packet length, padding length).

      Parameters:
      payload - the SSHPacket containing data to send
      Returns:
      sequence number of the sent packet
      Throws:
      TransportException - if an error occurred sending the packet
    • setDisconnectListener

      void setDisconnectListener(DisconnectListener listener)
      Specify a listener that will be notified upon disconnection.
      Parameters:
      listener - Disconnect Listener to be configured
    • getDisconnectListener

      DisconnectListener getDisconnectListener()
      Returns:
      the current disconnect listener.
    • die

      void die(Exception e)
      Kill the transport in an exceptional way.
      Parameters:
      e - The exception that occurred.
    • getHostKeyAlgorithm

      KeyAlgorithm getHostKeyAlgorithm()
    • getClientKeyAlgorithms

      List<KeyAlgorithm> getClientKeyAlgorithms(KeyType keyType) throws TransportException
      Throws:
      TransportException