xshell内网穿透(远程传入)隧道实现配置

xshell内网穿透(远程传入)隧道实现配置

先吐槽一下“远程传入”这个名词翻译,简直太难理解。

 

目标:

本地局域网的服务,通过远程服务器的端口暴露出去,可供全世界外网访问。

 

说明:

正常情况下,外部是找不到内部的局域网服务的,具体原理需要学习计算机网络的NAT,这里不再啰嗦。

于是,有如下几种方式可以解决:

1)本地局域网的路由器上,配置公网端口映射——前提是你有路由器控制权限,比如家用路由器或者企业路由器管理员

2)类似“花生壳”这种NAT产品实现——只有较少的免费流量,而且也有数量和速度限制

3)ssh隧道方式(如下)

4)vpn技术(没试过,但是理论也可行)

 

ssh隧道方式步骤:

1)关闭阿里云控制台的云防火墙(如果你不会配置,就简单暴力处理)

2)关闭linux本身防火墙firewalld,即执行 systemctl stop firewalld(如果你不会配置,就简单暴力处理)

测试:服务器任意目录开启一个简单的http服务器,即执行 python -m SimpleHTTPServer

然后,通过公网IP+8000访问,看是否端口是否配置正确。

如果配置正确,那么会展示一个类似FTP的索引页(除非你这个目录下刚好有index,html)

如果没看到内容或者卡半天,那就先去折腾一下防火墙或者咨询一下云服务商。

3)vim /etc/ssh/sshd_config

找到文件中被注释掉的GatewayPorts no,去注释,并将no改成yes

如果没找到就在末尾添加上GatewayPorts yes

很重要,很重要,很重要!!!

否则,只能远程服务器localhost(127.0.0.1)监听和访问,不能公网IP监听和访问。

先改了再开启xshell隧道,否则仍然是127.0.0.1。

退出shell窗口,然后重新开启shell窗口,即可。

可以通过命令netstat -ant 观察 12345的local IP是不是0.0.0.0。

4)添加隧道配置,选择远程(传入)——也就是把本地从登录后的服务器暴露出去,供外网访问。

image.png

效果:

image.png

这样,当全世界通过远程服务器公网IP的8080访问时,背后真实访问的是我们本地的服务。

这个尤其适合于本地开发,临时对外提供服务,供别人查看,或者类似微信小程序开发,微信服务器需要主动找我们通信,而如果我们没有公网IP提供,那么将无法通知支付回调结果。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注