【问题标题】:Using JSch to create a SOCKS proxy tunneled through SSH使用 JSch 创建一个通过 SSH 隧道化的 SOCKS 代理
【发布时间】:2018-03-23 18:59:58
【问题描述】:

据我所知,可以使用 JSch 创建一个 SSH 隧道,然后将设置放在 Firefox 中作为 SOCKS5 代理,所有流量都将通过 JSch 连接的机器。我找到了以下代码,但有一些我不明白的地方。

String host = "my ssh server ip";
String user = "root";
String password = "mypass";
int port = 22;

int tunnelLocalPort = 9080;
String tunnelRemoteHost = "YYY.YYY.YYY.YYY";
int tunnelRemotePort = 80;

JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.setPassword(password);
localUserInfo lui = new localUserInfo();
session.setUserInfo(lui);
session.connect();
session.setPortForwardingL(tunnelLocalPort, tunnelRemoteHost, tunnelRemotePort);
System.out.println("Connected");

tunnelLocalPort 是我的 java 程序要监听的端口吗?这是我放 Firefox SOCKS5 代理设置的端口?

我不明白 tunnelRemoteHost 的用途,我希望它像 SOCKS5 代理一样,就像 PuTTY 在其上设置隧道时所做的那样。

【问题讨论】:

    标签: java ssh jsch socks ssh-tunnel


    【解决方案1】:

    JSch 确实允许创建 SSH 隧道。但是 PuTTY 的“动态”端口转发功能(我假设您指的是)不仅仅是 SSH 隧道。它特别实现了 SOCKS 代理(你所追求的)。这是 JSch 没有实现的东西。

    对于普通的 SSH 隧道/端口转发,您必须指定目标地址,以将隧道的另一端连接到 (tunnelRemoteHost)。这在 PuTTY“动态”模式下显然不是必需的,因为有代理协议 (SOCKS) 来处理这种情况。

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 2020-09-17
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2016-09-25
      • 1970-01-01
      相关资源
      最近更新 更多