欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ssh 内网穿透 - 如何在家里访问公司内网的服务器

程序员文章站 2022-06-02 20:14:49
...

        周末在家,总想着能不能用一下公司的服务器,这样在家里也可以看到公司服务器的运行状况。但是家里是在一个内网中,公司的服务器也是在一个内网中,它们各自有各自独立的局域网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。类比,就可以了。(期待可以在任何地点访问公司服务器! 吼吼~)