周末在家,总想着能不能用一下公司的服务器,这样在家里也可以看到公司服务器的运行状况。但是家里是在一个内网中,公司的服务器也是在一个内网中,它们各自有各自独立的局域网IP。两者不可能直接通信的,但是可以通过双方都可以访问的第三方服务器来达成链接。这种方法又叫做内网穿透,目前我并没有第三方的公网IP,在自己电脑的虚拟机上做了一个测试,在这里简单简单记录下ssh内网穿透的原理。
主要参考了这篇文章(感谢作者):https://blog.csdn.net/jiangbenchu/article/details/84438959
准备三台机器,其中两个不能互联,但是都可以和第三方机器连接:
我建了两个虚拟机,这两者之间是无法通信的,我将其分别命名为ubuntu1和ubuntu2。但是这两个虚拟机系统都可以访问宿主机A:192.168.120.28. 假定这三个机器的用户名都是xxx。
首先,利用ssh建立ubuntu1跟机器A的反向代理(在ubuntu1机器上运行):
ssh -fCNR 666:localhost:22 xxx@192.168.120.28
下面是几个参数含义的解释:
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口
上面这行命令的含义是,将A机器上的666端口内容转发到ubuntu