我想在我的Android代码中使用ssh 动态端口转发。
我使用了库 jcraft ,但遗憾的是这个库不支持动态端口转发,只支持 本地端口转发 和 远程端口转发 。
换句话说,我想在我的android代码中像这样ssh:
ssh -D 10000 user@host
有人能帮助我吗?
答案 0 :(得分:1)
JSCH是SSH protocol的Java实现。它不是OpenSSH ssh
命令行实用程序的完整重新实现。在动态代理功能的情况下,JSCH提供通过SSH会话隧道TCP连接的能力,但它不提供客户端接收要转发的连接所需的SOCKS代理服务器。
为了完成这项工作,您需要在应用程序中嵌入SOCKS proxy。当客户端连接到应用程序的SOCKS端口(相当于示例中的端口10000)时,它将使用SOCKS协议告诉应用程序它想要连接到哪个主机和端口。
然后,您的应用程序 - 可能使用JSCH创建到某个远程服务器的SSH会话 - 将使用JSCH打开"direct-tcpip" channel到客户端请求的主机和端口。然后,您的应用程序将在direct-tcpip通道和请求代理的客户端之间中继数据。