這兩天又要作微信公衆號開發,以前爲了方便測試,用了內網穿透工具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