利用ssh反向代理訪問內網-跳板機

背景

內網服務器A(192.168.100.100)無法訪問外網,現有外網服務器B(1.2.3.4),想通過B來訪問A,即通過將外網服務器B搭建爲跳板機,使得其他電腦可以通過B來訪問A,或者ssh遠程控制A

使用命令

# 反向代理(推薦autossh)
ssh -fCNR remote_ip:remote_port:local_ip:local_port remote_user@remote_ip
-f 後臺執行ssh指令
-C 允許壓縮數據
-N 不執行遠程指令
-R 將遠程主機(服務器)的某個端口轉發到本地端指定機器的指定端口
-L 將本地機(客戶機)的某個端口轉發到遠端指定機器的指定端口
-p 指定遠程主機的端口

autossh -M monitor_port -fCNR remote_ip:remote_port:local_ip:local_port remote_user@remote_ip
-M 指定心跳端口,用來發送echo數據,+1的端口來接收

# 正向代理
ssh -fCNL bind_ip:bind_port:local_ip:local_port local_user@local_ip

內網服務器(反向)

# ssh祕鑰的密碼設置爲空的話,就可以實現完全腳本自動啓動
# 需要提前將祕鑰ssh-copy-id到外網服務器
autossh -M 40230 -fCNR  10022:192.168.100.100:22 [email protected] -i /root/.ssh/100_key

外網服務器(正向)

ssh -fCNL *:2233:127.0.0.1:10022 [email protected]

驗證

# 在其他機器上通過ssh訪問內網服務器A,需要輸入內網用戶的密碼
ssh -p 2233 [email protected]

原理

外網服務器的ssh命令表示:所有發送到1.2.3.4:2233的流量會轉發到1.2.3.4:10022上
內網服務器的ssh命令表示:所有發送到1.2.3.4:10022上的流量轉發到內網的22端口上

開機自動生效

將命令加入到/etc/rc.d/rc.local即可

備註

ssh反向鏈接不穩定,超時會斷開連接
autossh斷開後,會自動重連

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章