微信开发调试必备:内网穿透(ssh远程转发与本地转发)
参数 | 说明 |
---|---|
9999 | 远程123.123.123.123主机的端口 |
localhost:8488 | 本地ip 或者其它ip |
-C | 为压缩数据 |
-q | 安静模式 |
-T | 禁止远程分配终端 |
-n | 关闭标准输入 |
-N | 不执行远程命令 |
-
需求
开发微信相关功能的时候需要在本地调试,于是就需要把提供给微信的域名接收到的请求从公网上转到本地。 -
实现方案
ngrok:用go实现的http隧道工具
https://my.oschina.net/jianming/blog/1633243 原理
ssh: 最小成本搭建开发环境 -
绑定0.0.0.0
$ vi /etc/ssh/sshd_config
#加入一行
GatewayPorts yes
$ service sshd restart (centos重启ssh)
-
远程转发
ssh -R参数开启远程转发功能
借用大神blog了解下各种名词解释-> https://www.cnblogs.com/zangfans/p/8848279.html
$ ssh -CqTnN -R 0.0.0.0:9999:localhost:8488 root@123.123.123.123
或者
$ ssh -qngNTR 0.0.0.0:9999:localhost:8488 root@123.123.123.123
-
ssh连接掉线处理方式
使用autosssh
$ autossh -M 5555 -v -CqTnN -R 8080:localhost:8080 root@123.123.123.123
Q1:实际使用上还是会过几天就会掉线,要重启下autossh,可以使用supervisor管理进程
Q2:root账户到对端必须支持ssh免登录
最后再贴下ssh本地转发命令
$ ssh -CqTnN -L 9999:123.123.123.123:15672 root@123.123.123.123
本地端口9999被访问时,会自动转发到远程服务15672端口
navicat可以使用ssh隧道方式连接远端的mysql服务器
还有用途很多,比如一些私密的连接,远端服务器(比如阿里云)不想对外开放端口,就可以用这种连接方式
-
最后在123.123.123.123查看端口被占用情况
绑定0.0.0.0前
$ lsof -i tcp:12100
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 9441 mm 10u IPv4 97973129 0t0 TCP localhost:12100 (LISTEN)
绑定0.0.0.0后
$ lsof -i tcp:12100
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 11704 mm 10u IPv4 97993035 0t0 TCP *:12100 (LISTEN)