我已经尝试了很长时间,但还没有找到一个好的解决方案。我在 NAT 后面有几台服务器,它们都运行 SSH 守护程序。其中一台机器是我的主服务器,它将 SSH 端口转发给它。我想要的基本上是通过主服务器打开与其他 NAT 服务器的连接,类似于我通过打开与主服务器的连接然后通过 SSH 进入目的地可以实现的功能。由于有些应用程序在 SSH 上运行,因此我想使此操作自动化,以便在连接本身上运行 rsync 或 git。
SSH 有反向代理吗?
答案1
您可以使用ProxyCommand
和netcat
来执行此操作.ssh/config
:
# Your 'gateway' server.
Host gateway
# Any other server.
Host server1
ProxyCommand ssh gateway /bin/netcat %h %p
如果你这样做ssh server1
,你将打开从当前位置到“网关”服务器的 SSH 连接,这将打开到 的 TCP 连接server1
。此 TCP 连接将作为当前位置和 之间的 SSH 连接server1
。
编辑:这种技术通常称为“ssh jumphost”。
答案2
虽然这与弹跳连接不同,但为了在类似情况下减少复杂性和依赖性,我让 SSHD 监听双端口,然后从路由器转发到各个服务器的辅助端口,以便 22 在内部工作,服务器 A 可能有从路由器转发的端口 2222,服务器 B 可能有 2223,服务器 C 可能有 2224,等等。