autossh介紹:
autossh 是一個用來啟動 ssh 并進行監控的程式,可在需要時重新開機 ssh,如果程式問題或者是網絡問題。其靈感和機制來自于 rstunnel (Reliable SSH Tunnel). autossh 1.2 的方法已經改變:autossh 使用 ssh 來構造一個 ssh 重定向循環(本地到遠端和遠端到本地),然後發送測試資料并獲得傳回結果。
内網主機主動連接配接到外網主機,又被稱作反向連接配接(Reverse Connection),這樣NAT路由/防火牆就會在内網主機和外網主機之間建立映射即可互相通信了。但這種映射是路由網關自動維持的,不會持續下去,如果連接配接斷開或者網絡不穩定都會導緻通信失敗,這時内網主機需要自動重連機制了。
安裝:
yum install autossh
執行個體:
autossh -M 9090 -fCNR 18081:10.10.3.x:8080 [email protected]
autossh -M 9091 -fCNR 18082:10.10.3.x:80 [email protected]
autossh -M 9091 -fCNR 18083:127.0.0.1:80 [email protected]
這樣将在'x.x.x.x'主機上開啟一個本地偵聽位址:18081,通路本地18081将轉發至10.10.3.x:8080
-M 9090參數,負責通過9090端口監視連接配接狀态,連接配接有問題時就會自動重連。
-M 是伺服器echo機制使用的端口。
autossh -M 5678 -CqTfnN -D 192.168.0.2:7070 freeoa@remote-host
參數解釋:
-M為autossh參數, -CqTfnN -D 為ssh參數
-M 5678 : 負責通過5678端口監視連接配接狀态,連接配接有問題時就會自動重連
-C :啟動資料壓縮傳輸
-q :安靜模式運作,忽略提示和錯誤
-T :不占用shell
-f :背景運作
-n :配合 -f 參數使用
-N :不執行遠端指令,專為端口轉發度身打造
-D 192.168.0.2:7070 :指定一個本地機器 “動态的“ 應用程式端口轉發,如果不加IP位址,預設隻監聽127.0.0.1
使用場景:
場景:A是内網伺服器192.168.1.10(内部多次nat,無法使用公網IP),B是内網使用者轉發代理伺服器192.168.1.12,C是公網伺服器x.x.x.x,D是使用者PC
需求:D通路A内網伺服器web 8080
方法:
1.B安裝autossh
3.設定B可以無密碼登陸C
4.D上打開putty,設定正向代理,點選Add,save儲存,如圖:
補充:
注意幾個參數:
在實際應用中,發現每隔10分鐘,會斷線重連,這對應用造成很大影響。
使用AUTOSSH_MAXLIFETIME參數設定轉發存活時間,在這個時間内不會斷,但是時間到後,會kill掉程序,無法重連。
使用AUTOSSH_POLL,可以指定多長時間斷線重連,官網原話,實際上沒看懂,希望了解的同道指點。
在實際中,使用這個參數,依然無法解決我的問題,authossh實際上是調用ssh,可以再加上 -o TCPKeepAlive=yes -o ServerAliveInterval=30 ,解決頻繁斷線問題。
一個例子:
autossh -M 9098 -CNR x.x.x.x:443:10.x.x.x:443 [email protected] -f AUTOSSH_POLL 86400 -o TCPKeepAlive=yes -o ServerAliveInterval=30
本文轉自 穿越防火牆 51CTO部落格,原文連結:http://blog.51cto.com/sjitwant/1976409