gpt4 book ai didi

java - 使用 JSch 创建通过 SSH 隧道传输的 SOCKS 代理

转载 作者:行者123 更新时间:2023-11-30 06:28:03 53 4
gpt4 key购买 nike

据我所知,可以使用 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 在其上设置隧道时所做的那样。

最佳答案

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

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

关于java - 使用 JSch 创建通过 SSH 隧道传输的 SOCKS 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46699449/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com