ssh 内网穿透 - 如何在家里访问公司内网的服务器
周末在家,总想着能不能用一下公司的服务器,这样在家里也可以看到公司服务器的运行状况。但是家里是在一个内网中,公司的服务器也是在一个内网中,它们各自有各自独立的局域网IP。两者不可能直接通信的,但是可以通过双方都可以访问的第三方服务器来达成链接。这种方法又叫做内网穿透,目前我并没有第三方的公网IP,在自己电脑的虚拟机上做了一个测试,在这里简单简单记录下ssh内网穿透的原理。
主要参考了这篇文章(感谢作者):https://blog.****.net/jiangbenchu/article/details/84438959
准备三台机器,其中两个不能互联,但是都可以和第三方机器连接:
我建了两个虚拟机,这两者之间是无法通信的,我将其分别命名为ubuntu1和ubuntu2。但是这两个虚拟机系统都可以访问宿主机A:192.168.120.28. 假定这三个机器的用户名都是xxx。
首先,利用ssh建立ubuntu1跟机器A的反向代理(在ubuntu1机器上运行):
ssh -fCNR 666:localhost:22 [email protected]
下面是几个参数含义的解释:
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口
上面这行命令的含义是,将A机器上的666端口内容转发到ubuntu1机器的22端口来。这样一来,我们只需要访问A机器的666端口,就相当于访问了ubuntu1机器的22端口。
实际上,这一行命令就已经可以实现从ubuntu2到ubuntu1的访问了,我们可以从ubuntu2中,采用ssh访问机器A的666端口,然后就直接跳转到ubuntu1的22端口中去了,注意期间需要输入的密码,是机器ubuntu1的密码,而不是A机器的密码。在ubuntu2机器上运行下面指令:
ssh -p 666 [email protected]
这样就结束了(如此来看,这个配置过程是不是有点过于简单了 -_-!)。
如果哪天有了VPS,公司的电脑相当于ubuntu1,家里的电脑相当于ubuntu2,VPS相当于机器A。类比,就可以了。(期待可以在任何地点访问公司服务器! 吼吼~)
上一篇: 路由——嵌套路由