Linux SSH 打洞

标签: none

Alice 和 Bob 在一家公司工作,公司网络在防火墙后面。在外网有一个服务器 123.7.8.9:8090 上有一个 web 服务器。 Alice 想访问,但是公司防火墙只开通的 22 端口,其他端口都封闭了。

Snipaste_2020-09-12_17-05-22.png

Bob 在外网放了一台机器,123.4.5.6 ,提供了 SSH 服务。 Bob 可以帮助 Alice

Bob 在自己的电脑(192.168.0.1)上,登陆 123.4.5.6

ssh -L 0.0.0.0:8080:123.7.8.9:8090 bob@123.4.5.6

然后 alice 就可以访问 http://192.168.0.1:8080 ,就像访问 123.7.8.9:8090 一样。

-L <local ip>:<local port>:<remote ip>:<remote port> <server addr>

用于建立一个 ssh 隧道,在本机监听 <local ip>:<local port> 这个地址。如果有客户端建立 tcp 连接,那么就像在 <server addr> 这台机器上,创建了一个连接到 <remote ip>:<remote port> 上一样。

反向隧道

Snipaste_2020-09-12_17-05-54.png

Bob 家里面有两台机器,192.168.0.1 和 192.168.0.100 。
Bob 买了一台虚拟主机,互联网 IP 123.4.5.6 。

他在公司里,想登陆家里的服务器 192.168.0.100 。那么他上班前,在 192.168.0.1 上运行命令

ssh -R123.4.5.6:60022:192.168.0.100:22 192.168.0.1

这样就在 123.4.5.6. 上建立了一个反向隧道。

Bob 在公司里面,就可以

ssh -p 60022 123.4.5.6

登陆家里的 192.168.0.100 ,就像从 192.168.0.1 上登陆一样。

用 SSH 命令打洞


扫描二维码,在手机上阅读!

添加新评论