【发布时间】:2018-10-24 06:51:26
【问题描述】:
我想在我的 android 代码中使用 ssh 动态端口转发。
我使用了库jcraft,但不幸的是这个库不支持动态端口转发,只支持本地端口转发 和 远程端口转发。
换句话说,我想在我的 android 代码中像这样 ssh:
ssh -D 10000 user@host
谁能帮帮我?
【问题讨论】:
标签: android ssh portforwarding ssh-tunnel
我想在我的 android 代码中使用 ssh 动态端口转发。
我使用了库jcraft,但不幸的是这个库不支持动态端口转发,只支持本地端口转发 和 远程端口转发。
换句话说,我想在我的 android 代码中像这样 ssh:
ssh -D 10000 user@host
谁能帮帮我?
【问题讨论】:
标签: android ssh portforwarding ssh-tunnel
JSCH 是SSH protocol 的Java 实现。这不是对OpenSSHssh 命令行实用程序的完全重新实现。在动态代理功能的情况下,JSCH 提供了通过 SSH 会话隧道 TCP 连接的能力,但它不提供客户端接收要转发的连接所需的 SOCKS 代理服务器。
要完成这项工作,您需要将SOCKS proxy 嵌入到您的应用程序中。当客户端连接到应用程序的 SOCKS 端口(在您的示例中相当于端口 10000)时,它将使用 SOCKS 协议告诉您的应用程序要连接到哪个主机和端口。
然后您的应用程序(可能使用 JSCH 来创建与某个远程服务器的 SSH 会话)将使用 JSCH 向客户端请求的主机和端口打开 "direct-tcpip" channel。然后,您的应用程序将在 direct-tcpip 通道和请求代理的客户端之间中继数据。
【讨论】: