背景
內網服務器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斷開後,會自動重連