SSH到服务器后面的防火墙

H O*_*H O 15 ssh tunneling

我目前正在尝试研究如何SSH到防火墙后面的服务器,拒绝所有传入的连接.服务器可以SSH出来,所以我想知道是否有办法让防火墙后面的服务器创建到我的工作站的SSH隧道,然后允许我的工作站通过它发送命令回服务器?

我已经研究过隧道/反向隧道,但这些似乎是端口转发解决方案,由于防火墙拒绝所有端口上的所有连接,因此无法正常工作.

理想情况下,我想在Ruby(使用Net :: SSH gem)中执行此操作,以便不要像以下那样打开新连接:

Net::SSH.start('host', 'user', :password => "password")
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式绑定到现有的隧道.

谢谢!

Ker*_* SB 28

如果您可以控制服务器,这非常简单.我将提供命令行版本,您可以将其用于任何您喜欢的框架:

server$ ssh -R 9091:localhost:22 client.example.egg

client$ ssh -p 9091 localhost
Run Code Online (Sandbox Code Playgroud)

服务器首先建立到客户端的连接,该连接开始在端口9091上的"R"表情端(即客户端)上监听(我刚刚编写的东西),然后将这些连接转发到localhost:22自身的ssh服务器.

然后客户端只需要连接到自己的本地端口9091,该端口透明地转发到服务器的ssh服务器.

这通常会对您的公钥检查(以及附加的安全性!)造成严重破坏,因为客户端的ssh客户端不知道它与之localhost:9091相同server:22.如果您的客户端是Putty,那么您可以选择在某处提供"真实"服务器名称,以便可以正确查找凭据.

  • @Will:当然,你可以隧道一个特定的TCP端口,或者你可以建立一个SOCKS代理来隧道*任何*TCP连接(选项`-D`). (2认同)