JSch 把网络代理放在 SSH 会话上。此后在该会话之上打开的 SFTP 通道就会使用这条已建立的路径。

若会话已配置为指向目标 SSH 服务器,请在连接之前选择一个 HTTP CONNECT 网关:

ProxyHTTP gateway = new ProxyHTTP("proxy.example", 8080);
session.setProxy(gateway);
session.connect(10000);

会话仍然保存 SSH 目标、登录配置和主机密钥策略。网关地址标识中间人。它的策略必须允许目标实际使用的 SSH 端口。对于位于允许的公共路由上、可公开访问的 SFTP 服务器,HTTP 代理列表为第一个示例提供网关地址。请使用不带代理凭据的新代理适配器,并确认对实际 SSH 主机和端口的许可。

若使用 SOCKS5 服务,则改用相应的适配器:

session.setProxy(new ProxySOCKS5("proxy.example", 1080));

选择与端点协议相符的适配器。HTTP 代理和 SOCKS 监听器并不理解同一种协商过程。

在适合使用 JSch 的 HTTP Basic 代理登录时,请在连接之前调用 gateway.setUserPasswd(proxyUser, proxyPassword)。SSH 账户仍配置在会话上。会话连接之后再打开 SFTP 通道,传输结束后断开通道和会话。

相关文章