實現SSH內網穿透

https://blog.csdn.net/weixin_36394852/article/details/72725505#commentBox

實際情況:兩臺服務器:inner - 內部服務器,無公網IP, outter - 有公網IP

目標:實現任何地點都能ssh連接到inner服務器

解決方案: inner機器做反向代理,outter做正向代理,最終由outter對外提供inner的服務

代理參數說明

反向代理:ssh -fCNR

正向代理:ssh -fCNL

參數:(大小寫敏感)

-f 後臺執行ssh指令
-C 允許壓縮數據
-N 不執行遠程指令
-R 將遠程主機(服務器)的某個端口轉發到本地端指定機器的指定端口
-L 將本地機(客戶機)的某個端口轉發到遠端指定機器的指定端口
-p 指定遠程主機的端口
 

示例:

一 在inner機器建立反向代理

建立inner機器到outter機器的反向代理,具體指令爲
ssh -fCNR [outter_IP或省略]:[outter_port]:[inner_IP]:[inner_port] [登陸outter機器的用戶名@服務器IP]
在這裏我使用了outter機器的8887端口,以及inner機器的22端口,按照上面的指令就是這樣子的操作
令 inner_ip = 192.168.3.17 outter_ip = 1.2.3.4
ssh -fCNR 8887:127.0.0.1:22 [email protected]
注意 127.0.0.1 不要使用localhost,不然可能導致 channel 2: open failed: connect failed: Connection refused 錯誤

檢測進程是否啓動成功:

 ps -ef | grep ssh

最好設置爲開機啓動,將命令 ssh -fCNR 8887:127.0.0.1:22 [email protected]添加到 /etc/rc.local,同時需要將inner機器設置爲免密登陸outter機器,具體做法參照另一篇博文

設置免密

二 在outter機器建立正向代理,用來做轉發

具體指令爲
ssh -fCNL [inner_IP或省略]:[inner_port]:[outter_IP]:[outter_port] [登陸outter機器的用戶名@outter_IP]
監聽outter的8888端口,然後轉發到本機的8887端口,注意8888端口需要開放出來,不然外部無法訪問到該端口
ssh -fCNL *:8888:127.0.0.1:8887 127.0.0.1

查看進程 ps -ef | grep ssh

查看端口 ss -tnl | grep 88

一切正常

任意機器遠程ssh:

ssh -p8888 outter_username@outter_Ip

大功告成!

進階版

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