ssh端口轉發筆記:ssh反向代理(隧道)、動態代理、本地代理


ssh端口轉發筆記:ssh反向代理(隧道)、動態代理、本地代理

原創 2017年07月25日 19:32:06

 

ssh端口轉發筆記:ssh反向代理(隧道)、動態代理、本地代理

縮略詞

本機:ssh命令發起方,即運行ssh命令的那台機器。也可簡稱客戶端
遠程機:ssh命令連接到的服務器,一般指運行ssh服務的那台機器。也可簡稱服務端
本地機群:能直接與本機通迅的主機集合,包含本機自身。
遠程機群: 能直接與遠程機通迅的主機集合,包含遠程自身。

動態代理

動態代理一般用於代理服務器,應用場景為:本地機群不能直接訪問某些地址/端口,但遠程機可以。本機通過建立一個指定本機端口,遠程機端口不指定(動態)的連接,讓本地機群可以通過該連接去訪問那些地址(基於socks4和socks5協議)。

ssh -o ServerAliveInterval=20 -g -Nf -D 6060 proxy@47.44.161.114 #動態代理

 

參數 說明
-o ServerAliveInterval=20 代表心跳包,ssh在一段時間沒數據后會把連接給斷開。
-g 允許其他主機連接到本機端口進行轉發。
如果無效,要設置本機**sshd_config文件:**gatewayports yes
-N 不執行遠程命令。 僅做端口轉發(僅適用於協議版本2)。
-f 將ssh切換到后台
-D 6060 指定以本機哪個端口做為轉發端口
proxy@47.44.161.114 以指定帳號連接遠程機

反向代理

反向代理一般用於內網穿透,應用場景為:本機在防火牆內,並且防火牆未向外開放本機(或本地網絡內其他主機)端口,遠程機有向外開放的可用端口,本機通過建立一個指定本機(或本地網絡內其他主機)端口和遠程機端口的連接(也可以理解成端口映射),讓外部應用可以通過遠程機端口訪問本機(或本地網絡內其他主機)端口。

ssh -o ServerAliveInterval=20 -g -Nf -R 5001:localhost:6060 proxy@47.44.161.114 #反向代理

 

參數 說明
-o ServerAliveInterval=20 代表心跳包,ssh在一段時間沒數據后會把連接給斷開。
-g 允許其遠程機群連接到遠程機端口進行轉發。
如果無效,要修改遠程機**sshd_config文件:**gatewayports yes
-N 不執行遠程命令。 僅做端口轉發(僅適用於協議版本2)。
-f 將ssh切換到后台
-R 15001:localhost:6060 反向轉發,用值用:分隔為三項,格式為: <遠程機端口>:<本地機群>:<端口>。
proxy@47.44.161.114 以指定帳號連接遠程機

本地代理

本地代理應用場景一般是兩類:一類是應用限制只能訪問本機端口,而實際需要訪問遠程機端口;一類是某個網絡環境只能允許一台主機訪問遠程機端口,而實際是網絡區域內多台主機都有這個要求。

ssh -o ServerAliveInterval=20 -g -Nf -L 5001:localhost:6060 proxy@47.44.161.114

 

參數 說明
-o ServerAliveInterval=20 代表心跳包,ssh在一段時間沒數據后會把連接給斷開。
-g 允許本地機群連接到本機端口進行轉發。
如果無效,要修改本機**sshd_config文件:**gatewayports yes
-N 不執行遠程命令。 僅做端口轉發(僅適用於協議版本2)。
-f 將ssh切換到后台
-L 15001:localhost:6060 本地轉發,用值用:分隔為三項,格式為: <本機端口>:<遠程機群>:<端口>。
示例里第二項localhost,代表的是遠程機,用這種寫法一般代表遠程主機也只能本機訪問該端口
proxy@47.44.161.114 以指定帳號連接遠程機

連接檢測腳本

ssh建立的連接有時候會因為網絡原因斷開,所以寫了個定時任務腳本(基於centos)


 #!/bin/sh ### reconnectproxy.sh ### cd ~ pid=` ps aux|grep ssh|grep -E "6060[[:space:]]+proxy@47.44.161.114"|awk '{print $2}'` dt=`date` if [ -n "$pid" ] then echo ${dt}" INFO:proxy is connected">>~/chkconn.log else echo ${dt}" WARN:proxy is not connected">>~/chkconn.log echo ${dt}" WARN:try to reconnect proxy ">>~/chkconn.log ssh -o ServerAliveInterval=20 -g -Nf -D 6060 proxy@47.44.161.114 fi

 

 

 

再用crontab -e命令將腳本加入任務計划中


  1 */5 * * * * sh /root/reconnectproxy.sh 

 

 

參考資料

[1].實戰 SSH 端口轉發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM