Class SftpStreamProxy

  • All Implemented Interfaces:
    com.jcraft.jsch.Proxy

    public class SftpStreamProxy
    extends java.lang.Object
    implements com.jcraft.jsch.Proxy
    Stream based proxy for JSch.

    Use a command on the proxy that will forward the SSH stream to the target host and port.

    Since:
    2.1
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String BASH_TCP_COMMAND
      Command format using bash built-in TCP stream.
      private com.jcraft.jsch.ChannelExec channel  
      private java.lang.String commandFormat
      Command pattern to execute on the proxy host.
      static java.lang.String NETCAT_COMMAND
      Command format using netcat command.
      private java.lang.String proxyHost
      Hostname used to connect to the proxy host.
      private FileSystemOptions proxyOptions
      The options for connection.
      private java.lang.String proxyPassword
      The password to be used for connection.
      private int proxyPort
      Port used to connect to the proxy host.
      private java.lang.String proxyUser
      Username used to connect to the proxy host.
      private com.jcraft.jsch.Session session  
    • Constructor Summary

      Constructors 
      Constructor Description
      SftpStreamProxy​(java.lang.String commandFormat, java.lang.String proxyUser, java.lang.String proxyHost, int proxyPort, java.lang.String proxyPassword, FileSystemOptions proxyOptions)
      Creates a stream proxy.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      void connect​(com.jcraft.jsch.SocketFactory socketFactory, java.lang.String targetHost, int targetPort, int timeout)  
      java.io.InputStream getInputStream()  
      java.io.OutputStream getOutputStream()  
      java.net.Socket getSocket()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • BASH_TCP_COMMAND

        public static final java.lang.String BASH_TCP_COMMAND
        Command format using bash built-in TCP stream.
        See Also:
        Constant Field Values
      • NETCAT_COMMAND

        public static final java.lang.String NETCAT_COMMAND
        Command format using netcat command.
        See Also:
        Constant Field Values
      • channel

        private com.jcraft.jsch.ChannelExec channel
      • commandFormat

        private final java.lang.String commandFormat
        Command pattern to execute on the proxy host.

        When run, the command output should be forwarded to the target host and port, and its input should be forwarded from the target host and port.

        The command will be created for each host/port pair by using String.format(String, Object...) with two objects: the target host name (String) and the target port (Integer).

        Here are two examples (that can be easily used by using the static members of this class):

        • nc -q 0 %s %d to use the netcat command (NETCAT_COMMAND)
        • /bin/bash -c 'exec 3<>/dev/tcp/%s/%d; cat <&3 & cat >&3; kill $! will use bash built-in TCP stream, which can be useful when there is no netcat available. (BASH_TCP_COMMAND)
      • proxyHost

        private final java.lang.String proxyHost
        Hostname used to connect to the proxy host.
      • proxyOptions

        private final FileSystemOptions proxyOptions
        The options for connection.
      • proxyPassword

        private final java.lang.String proxyPassword
        The password to be used for connection.
      • proxyPort

        private final int proxyPort
        Port used to connect to the proxy host.
      • proxyUser

        private final java.lang.String proxyUser
        Username used to connect to the proxy host.
      • session

        private com.jcraft.jsch.Session session
    • Constructor Detail

      • SftpStreamProxy

        public SftpStreamProxy​(java.lang.String commandFormat,
                               java.lang.String proxyUser,
                               java.lang.String proxyHost,
                               int proxyPort,
                               java.lang.String proxyPassword,
                               FileSystemOptions proxyOptions)
        Creates a stream proxy.
        Parameters:
        commandFormat - A format string that will be used to create the command to execute on the proxy host using String.format(String, Object...). Two parameters are given to the format command, the target host name (String) and port (Integer).
        proxyUser - The proxy user
        proxyPassword - The proxy password
        proxyHost - The proxy host
        proxyPort - The port to connect to on the proxy
        proxyOptions - Options used when connecting to the proxy
    • Method Detail

      • close

        public void close()
        Specified by:
        close in interface com.jcraft.jsch.Proxy
      • connect

        public void connect​(com.jcraft.jsch.SocketFactory socketFactory,
                            java.lang.String targetHost,
                            int targetPort,
                            int timeout)
                     throws java.lang.Exception
        Specified by:
        connect in interface com.jcraft.jsch.Proxy
        Throws:
        java.lang.Exception
      • getInputStream

        public java.io.InputStream getInputStream()
        Specified by:
        getInputStream in interface com.jcraft.jsch.Proxy
      • getOutputStream

        public java.io.OutputStream getOutputStream()
        Specified by:
        getOutputStream in interface com.jcraft.jsch.Proxy
      • getSocket

        public java.net.Socket getSocket()
        Specified by:
        getSocket in interface com.jcraft.jsch.Proxy