SSH命令之正反向代理和端口轉發


前言

近期碰到了一個需要連接主機A的數據庫的需求,但是主機A是在內網中,無法直接連接到,也就無法訪問到數據庫。但是這里也有另一台主機B,和主機A同處一個內網中,但是連接主機B需要通過跳板機C。我的服務器是yyy。通過這次經歷我發現我對ssh連接的命令以及正反向代理的理解不是很充分,最終在rhh的幫助下才解決了問題。

主機 主機IP
A 47.168.127.1
B 47.168.127.2
yyy 47.168.20.2
C 47.168.127.43

思路

由於我無法直接連接主機A,但主機A和主機B在同一內網下,所以我可以通過主機B作為代理轉發主機A的3306端口到我的服務器yyy的3308端口即可。這樣我就可以直接在yyy上連接數據庫。所以此時只需要連接主機B即可,而連接主機B可以通過跳板機C代理連接。、

解決

ssh -o Proxycommand='ssh root@47.628.127.43 -P 123 -W %h:%p' root@47.168.127.2
ssh -R 3308:47.168.127.1:3306 root@47.168.20.2
這樣只需要在yyy的3308端口就可以連接到主機A的數據庫了
mysql -h 127.0.0.1 -P 3308 -u root -p

SSH命令

正向代理 ssh -fCNL
反向代理 ssh -fCNR
-f 后台執行ssh指令
-C 允許壓縮數據
-N 連接后不取得shell
-C 啟動壓縮,加快速度

正向代理(L)

將中間主機可訪問的主機指定端口鏡像到本地指定端口

ssh -L 本地IP:本地端口:中間主機可訪問的IP:中間主機可訪問的IP的端口 root@中間主機

反向代理(R)

將本地可訪問的主機的指定端口鏡像到遠程指定端口

ssh -R 遠程IP:遠程端口:本地可訪問IP:本地可訪問IP的端口 root@遠程主機

端口動態轉發

當訪問internet時,本機的1080端口作為代理服務器(socks5代理),訪問請求被轉發到ssherver上,由sshserver代替之訪問internet

ssh -fCND 1083 root@x.x.x.x
ssh -fN -D 0.0.0.0:1083 root@x.x.x.x
執行之后 使用本地1083的socks5代理,流量顯示為服務器x.x.x.x的ip

參考鏈接

rgg


免責聲明!

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



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