使用Xshell实现SSH隧道穿透

时间:2024-06-03 06:58:41

最近公司开发项目遇到了一个非常蛋疼的事情!我们公司同时迁入了电信、移动、联通三家的百兆光纤网络,这样就产生一个蛋疼事情。

A所使用的网络是电信网络,他是开发的了微信功能的服务的接口项目,给B和C提供所有微信的功能,所有调取微信能力都需要A来实现完成。

B所使用的 网络是移动网络,他开发了一个公众号的项目程序,他需要调用A来完成所有微信的能力,但是他和A不在一个局域网,这样他完全没有办法去调用A的接口进行调试。

 

上面就产生一个非常蛋疼事情,因为他俩所在网络完全不在一个局域网,所以调试上没法同步,要么使用传统的跳板机,要么把他俩的项目部署到服务器上进行调试,完事去看日子调试,无论哪种都是非常繁琐和麻烦的事情。

 

这时候我们要是使用SSH隧道穿透就非常方便,我们使用一台外网的阿里云服务器,这样无论是A还是B都能访问阿里云服务器,因为它有固定的ip和域名。

1.这里我们先在阿里云服务器上运行程序让他占用80端口,这里主要是让80端口运行起来,接着让A和阿里云服务器搭建一条SSH隧道,隧道的要求就是所有访问阿里云服务器的80端口的请求,都通过隧道转发给A的电脑上的8080端口。(这里A的电脑运行的项目我们需要设置成8080端口)

使用Xshell实现SSH隧道穿透

注:填写源主机的IP时候,一定要填写0.0.0.0不能填写127.0.0.1。

2.上述功能都完成后,我们B正常是需要调用A的接口,这里我们不能直接访问A,我们需要去访问阿里云服务器的80端口,这样我们的请求就会通过阿里云服务器和A搭建的隧道转发到A的电脑,这样他俩就能进行真机调试。

使用Xshell实现SSH隧道穿透

上面的功能就是SHH隧道,这里我们使用的Remote(Incoming)类型,就是“通过阿里云服务器和A电脑建立的SSH隧道,把所有访问阿里云的80端口的请求,通过隧道转发给A电脑的8080端口”。

 

在我们使用SSH隧道之前我们需要修改SSH的配置文件,让SSH隧道能让外网访问。

我们需要修改在/etc/ssh/目录下的sshd_conf的配置文件。

命令:vim /etc/ssh/sshd_config 

将配置文件的

#GatewayPorts no

命令的注释打开,并且把no修改成yes,

修改后命令:GatewayPorts yes

保存退出后,在执行 systemctl restart sshd.service命令,重新启动sshd服务。

 

这里我使用的Xshell工具,所有还需要管理Xshell工具,重新启动连接。