I. 两条指令搞定SSH反向隧道
II. 场景
假设我有两台电脑,一台办公(A)
的一台家用(B)
的,因为都是台式机所以呢就很不方便携带,当然了,作为一名开发,用的都是Linux OS
了,这个时候有可能我需要在电脑A
上面远程连接到B
电脑,做一些事情,有些只能在内网做的事情。
所以需求就是我需要在家里连接到办公室的电脑
III. 环境
主机 | IP | 作用 |
---|
A | 172.16.1.10 | 家里的老式台式机 |
B | 192.168.1.10 | 办公室的新式台式机 |
C | 45.77.131.34 | 放在公网用来翻墙的一台云主机 |
IV. 原理

V. 实施
在主机B上建立一个SSH 隧道,将C的6766端口转发到B的22端口上
$ ssh -p 22 -qngfNTR 6766:localhost:22 root@ss.ansheng.me
然后在A主机上利用连接到C主机,然后再SSH连接6766端口反向SSH到B
$ ssh root@ss.ansheng.me
[root@ansheng ~]# ssh -p 6766 hzhang@localhost
hzhang@Pavilion-dv7:~$ ifconfig
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.181 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::e646:516:f01b:f478 prefixlen 64 scopeid 0x20<link>
ether 00:16:ea:e0:f5:94 txqueuelen 1000 (Ethernet)
RX packets 53179 bytes 47259835 (47.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 36976 bytes 5379534 (5.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
完。
VI. 参考
看起来貌似很简单,自己玩玩还是很不错的,但是你每一次连接上去之后,在退出,隧道就会断开,你可能需要考虑如下情况:
- 维持稳定的SSH隧道,断开之后自动重建。
- 系统重启之后如何保持SSH隧道开机启动?
当然了,这些问题在下面的文章中都有讲到,可以参考。