【问题标题】:how to create ssh connection via socks proxy on local port in java如何在java中的本地端口上通过socks代理创建ssh连接
【发布时间】:2014-10-16 11:30:39
【问题描述】:

我有一个 socks 代理,可以通过以下命令在本地端口上的 Ubuntu 终端中创建 ssh 连接:

ssh -D local_port user_name@host_IP

但我想通过 Java 代码执行此任务。我使用了下面的代码,但任何时候运行它,都会显示这个异常:

“com.jcraft.jsch.JSchException:ProxySOCKS5:com.jcraft.jsch.JSchException:java.net.ConnectException:连接被拒绝”

public static void main(String[] arg) {
        try {
            JSch jsch = new JSch();
            String user = "user_name";
            String host = "host_IP";
            int port = local_port;
            Session session = jsch.getSession(user, host, 22);
            Proxy proxy = new ProxySOCKS5(host, port);
            session.setProxy(proxy);
            String passwd = "password";
            session.setPassword(passwd);
            UserInfo ui = new MyUserInfo()
            session.setUserInfo(ui);
            session.connect(30000);
            Channel channel = session.openChannel("shell");
            channel.setInputStream(System.in);
            channel.setOutputStream(System.out);
            channel.connect(3 * 1000);
        } catch (Exception e) {
            System.out.println(e);
        }
    }

【问题讨论】:

    标签: ssh proxy socks


    【解决方案1】:

    ProxySOCKS5 类实现了一个 SOCKSclient,Jsch 可以使用它来建立原始 SSH 连接。

    要提供等效于 ssh 的 -D 选项,您需要一个 SOCKS 服务器,它为每个客户端打开一个 ChannelDirectTCPIP 通道。 Jsch没有提供这样的东西,所以你可能不得不write your own

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2015-09-13
      • 1970-01-01
      相关资源
      最近更新 更多