使用反向ssh从外网访问内网主机

通过本方法可以从外网通过ssh访问内网的主机,前提是内网的主机要能够访问Internet,还需要一台具有公网地址的主机。

在内网主机上执行以下命令,其中:120.24.3.x是一台公网主机,该主机可以是云主机或者通过路由器端口映射到内网的一台主机,1111是这台公网主机映射的端口。

ssh -NfR 1111:localhost:22 root@120.24.3.x -p 22

执行完毕,会有一个后台进程运行

[root@localhost ~]# ps -ef |grep ssh
root 1115 1 0 10:59 ? 00:00:00 /usr/sbin/sshd
root 1258 1115 0 11:00 ? 00:00:01 sshd: root@pts/0 
root 3604 1 0 11:50 ? 00:00:00 ssh -NfR 1111:localhost:22 root@120.24.3.x -p 22
root 3606 1115 0 11:50 ? 00:00:00 sshd: root@pts/1 
root 3647 3610 0 11:57 pts/1 00:00:00 grep ssh

然后在公网主机上ssh本地的端口1111就可以访问内网的主机了

ssh root@localhost -p 1111