內網機器:192.168.1.2外網vps地址;122.114.250.153
內網機器192.168.1.2執行:
ssh-fCNR7280 :127.0.0.1:8882root@ 122. 114. 250. 153將內網機器的127.0.0.1的8882端口,通過主動連接外網的122.114.250.153的ssh,映射到外網vps的122.114.250.153的7280端口,實現網絡穿透.這樣訪問122.114.250.153的7280就可以相當于直接訪問內網的8882端口了.
注意ssh只能夠將內網的端口轉發到外網,不能夠動態的自動內網代理.如果你需要通過互聯網代理直接穿透到內網,一般來說有兩個方法:
如果你可以在內網的機器上創建一個透明代理端口且可以內網機器使用ssh:
在內網機器可以建立一個透明代理(如Tinyproxy)8882端口,然后再將這個8882端口映射到外網vps的7280.本地瀏覽器直接將代理服務器設置為122.114.250.153:7280就可以訪問到內網的資源了.
如果你不能創建一個代理端口,只可以使用ssh,且知道內網主機的ss用戶密碼(后面使用的都是root) 先將內網的ssh映射到外網
ssh-fCNR7280 :127.0.0.1:22root@ 122. 114. 250. 153通過ssh主動反向鏈接外網并將ssh端口映射到122.114.250.153,
這樣你鏈接122.114.250.153的7280就相當于鏈接到了內網的22(ssh)
客戶端主動鏈接vps的7280(內網的ssh)來創建代理隧道
執行:
ssh-qTfnN-D7070 root@ 122. 114. 250. 153-p 1080這時候在瀏覽器中設置代理122.114.250.153:1080.就可以直接輸入地址訪問內網中的資源了
注意ssh綁定地址到0.0.0.0
vps一般情況下ssh默認轉發只會映射到本地的127.0.0.1的端口.如果你需要映射到0.0.0.0讓外網訪問.修改配置/etc/ssh/sshd_config中設置GatewayPorts為yes,然后重啟ssh服務,再次進行轉發即可
關于ssh超時操作斷開后代理失效的問題
因為ssh時間未操作會自動斷開,所以需要搭建穩定的ssh工具,autossh就是用來解決這個問題的。
apt-get install autossh在內網客戶端機器執行:
autossh -M 5555 -NR 7280:127.0.0.1:8882 [email protected] vps端口:內網監聽地址:tinproxy端口 遠程vps用戶名:vpsIP //輸入密碼后會站住當前終端注意-M 5555是指定本地5555來鏈接到外網的ssh 如果你需要運行多條通道需要指定別的端口,如果占用則autissh無法成功建立連接!
和外網多臺主機建立多條通道
例如本機使用autossh和server1和server2建立通道
???????autossh-M 5555-NR 7280: 127.0.0.1:8882root @server2autossh -M 4444-NR 7280: 127.0.0.1:8882root @server1
這時候你來到外網的vps上面就可以看到,vps監聽了7280端口
IP地址切換導致斷網
注意,如果和外網通信的內網機器的ip地址改變,會導致整條通道斷開。這時候autossh還在后臺運行,重新鏈接需要重新進行建立一條通道,需要在內網機器上殺死autossh進程,然后外網殺掉7280端口。






