ssh动态端口转发

Posted

技术标签:

【中文标题】ssh动态端口转发【英文标题】:ssh dynamic port forwarding 【发布时间】:2018-10-24 06:51:26 【问题描述】:

我想在我的 android 代码中使用 ssh 动态端口转发

我使用了库jcraft,但不幸的是这个库不支持动态端口转发,只支持本地端口转发 远程端口转发

换句话说,我想在我的 android 代码中像这样 ssh:

ssh -D 10000 user@host

谁能帮帮我?

【问题讨论】:

【参考方案1】:

JSCH 是SSH protocol 的Java 实现。这不是对OpenSSHssh 命令行实用程序的完全重新实现。在动态代理功能的情况下,JSCH 提供了通过 SSH 会话隧道 TCP 连接的能力,但它不提供客户端接收要转发的连接所需的 SOCKS 代理服务器。

要完成这项工作,您需要将SOCKS proxy 嵌入到您的应用程序中。当客户端连接到应用程序的 SOCKS 端口(在您的示例中相当于端口 10000)时,它将使用 SOCKS 协议告诉您的应用程序要连接到哪个主机和端口。

然后您的应用程序(可能使用 JSCH 来创建与某个远程服务器的 SSH 会话)将使用 JSCH 向客户端请求的主机和端口打开 "direct-tcpip" channel。然后,您的应用程序将在 direct-tcpip 通道和请求代理的客户端之间中继数据。

【讨论】:

以上是关于ssh动态端口转发的主要内容,如果未能解决你的问题,请参考以下文章

Python 中的 SSH 动态端口转发('ssh -D')

如何使用 Ruby 进行动态端口转发

SSH端口转发

SSH端口转发

动态端口转发 libssh C

ssh 端口转发是什么有什么用