透明地将SSH连接转发到NATed服务器

我一直在尝试这个很长一段时间,我还没有find一个好的解决scheme。 我在NAT后面有几台服务器,都运行着一个SSH守护进程。 其中一台机器是我的主服务器,它将SSH端口转发给它。 我想要的基本上是打开一个连接到其他NAT服务器通过主服务器类似于我可以实现打开连接到主服务器,然后SSH到目的地。 由于有一些在SSH之上运行的应用程序,我想使这个自动化,以便在连接本身上运行rsync或git。

有没有SSH的反向代理

您可以在.ssh/config使用ProxyCommandnetcat来执行此操作:

 # Your 'gateway' server. Host gateway # Any other server. Host server1 ProxyCommand ssh gateway /bin/netcat %h %p 

如果你使用ssh server1 ,你将打开一个从当前位置到你的“网关”服务器的SSH连接,这将打开到server1的TCP连接。 这个TCP连接将作为您当前位置和server1之间的SSH连接。

编辑:这种技术通常被称为'ssh jumphost'。

虽然这不同于反弹周围的连接,为了降低类似情况下的复杂性和依赖性,我有SSHD侦听双端口,然后从路由器转发到单个服务器的辅助端口,以便内部工作和服务器A可能有端口2222从路由器转发,服务器B可能有2223,服务器C 2224等