假设有一些服务器在 remotehost.some.where:4444 上运行。我有一个坚持连接到 localhost:5555 的软件。ssh
我可以转发这个
ssh -L 5555:remotehost.some.where:4444 myuser@localhost
但这需要到 localhost 的不必要的 ssh 连接,添加-N
不会阻止。如何在没有登录的情况下进行此端口转发,可能使用其他工具?
假设有一些服务器在 remotehost.some.where:4444 上运行。我有一个坚持连接到 localhost:5555 的软件。ssh
我可以转发这个
ssh -L 5555:remotehost.some.where:4444 myuser@localhost
但这需要到 localhost 的不必要的 ssh 连接,添加-N
不会阻止。如何在没有登录的情况下进行此端口转发,可能使用其他工具?
最简单的解决方案是运行某种 TCP 代理。您可以使用
socat
,例如:当它正在运行时,与
5555
本地主机上的端口的连接将被转发到端口4444
上remotehost.some.where
。我在这里使用的命令只监听
127.0.0.1
. 如果您确实想接受来自 port 上其他主机的连接5555
,您可以放弃该bind=127.0.0.1
选项。有几种方法可以做到这一点。
1) 如果你是 GNU/Linux,就用
iptables
它来做;2)如果你真的,真的,真的想使用 SSH,生成一个 RSA 密钥对,将它复制到你的 ~./ssh/authorized_keys 文件并重复你的命令,添加
-N
选项。3) 如果您使用的是 Debian 或基于 Debian 的发行版,您可以使用
redir
.4)您也可以使用 来完成此操作
socat
,如下所示:socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080
希望有帮助。