这两天又要作微信公众号开发,以前为了方便测试,用了内网穿透工具Ngrok,前一段调研加密代理时了解到SSH也能够作内网穿透,所以特地研究了一下具体流程,这里记录一下。java
是的,虽然是内网穿透,但你须要一台有公网IP的服务器用来作转发,临时用的话,能够考虑用阿里的抢占式实例,具体请看上面的参考3git
/etc/ssh/sshd_config
,找到GatewayPorts
配置项,默认是注释起来的,取消注释,并把后面的值改为clientspecified
systemctl restart sshd
ssh
验证一下打开命令行窗口执行以下命令:ssh -fCNR 0.0.0.0:<远程映射端口>:localhost:<本地监听端口> root@<远程主机>
github
如何断开内网映射:segmentfault
taskkill /im ssh.exe /f
便可杀掉全部ssh进程wmic process where "name='ssh.exe'" get commandline,processid
来查询全部的ssh.exe进程,根据启动命令行找到对应的进程号,而后用taskkill /pid <进程ID> /f
来点杀进程一般杀掉内网机器上的ssh进程,也会自动结束服务器上对应的sshd进程,若是没有,则须要在服务器上手动清理安全
netstat -antp | grep <远程映射端口>
便可找到对应的sshd进程,而后用kill -9 <PID>
点杀之用SSH实现的内网穿透长时间没有数据传输会断掉,须要进行一些配置,让客户端和服务端保持链接。几个方案:服务器
让SSH客户端定时发送消息保持链接微信
<用户目录>\.ssh\config
,默认是没有这个配置文件的,须要手动建立一个。内容以下:Host * ServerAliveInterval 240
-o ServerAliveInterval=240
让SSH服务端定时发送消息保持链接
修改/etc/ssh/sshd_config,添加下面两行:网络
ServerAliveInterval 30 ServerAliveCountMax 60
请参见文首的参考4ssh