假设有一些服务器在remotehost.some.where:4444上运行。我有一个软件坚持连接到 localhost:5555。我可以将其转发ssh
为
ssh -L 5555:remotehost.some.where:4444 myuser@localhost
但这需要与本地主机建立不必要的 ssh 连接,而添加-N
不会阻止这种连接。如何在不登录的情况下(可能使用其他工具)进行此端口转发?
答案1
最简单的解决方案是运行某种 TCP 代理。您可以使用socat
,例如:
socat tcp-listen:5555,bind=127.0.0.1,fork tcp:remotehost.some.where:4444
当它运行时,到5555
本地主机上端口的连接将被转发到4444
上的端口remotehost.some.where
。
我在这里使用的命令仅侦听127.0.0.1
.如果您确实想在 port 上接受来自其他主机的连接5555
,则可以删除该bind=127.0.0.1
选项。
答案2
有几种方法可以做到这一点。
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
希望有帮助。