天天看點

SSH 内網端口轉發實戰

如果兩個内網之間的linux伺服器需要互相登入,或需要互相通路内網某個端口,擔憂沒有公網IP,可以使用的方法有ngrok(https://ngrok.com/),但并不友善,我們隻需兩條SSH指令即可。

SSH 内網端口轉發實戰

先給出本文主角,兩條SSH指令:

遠端端口轉發(由遠端伺服器某個端口轉發到本地内網伺服器端口)

ssh   -CfNg  -R(指令行的關鍵)   2222(遠端伺服器端口):127.0.0.1:22(本地端口)   123.45.67.8(遠端伺服器)

本地端口轉發(由本地内網伺服器某個端口轉發到遠端伺服器端口)

ssh   -CfNg  -L(指令行的關鍵)    2222(遠端伺服器端口):0.0.0.0:4444(本地端口)   123.45.67.8(遠端伺服器)

指令行選項解釋:

-C:壓縮資料傳輸。

-f :背景認證使用者/密碼,通常和-N連用,不用登入到遠端主機。

-N :不執行腳本或指令,通常與-f連用。

-g :在-L/-R/-D參數中,允許遠端主機連接配接到建立的轉發的端口,如果不加這個參數,隻允許本地主機建立連接配接。

-L 本地端口:目标IP:目标端口

-T 不配置設定 TTY 隻做代理用

-q 安靜模式,不輸出 錯誤/警告 資訊

需要讓遠端機器能通路的内部機器的端口号(端口:22)

在清楚了上面的參數後,我們使用下面的指令來建立一個遠端SSH隧道,在内網主機執。

ssh   -CfNg -R 2222:127.0.0.1:22  123.45.67.8

現在,在IP是123.45.67.8的機器上我們用下面的指令就可以登陸内網IP為192.168.0.100的機器了。

ssh -p 2222 localhost

現在公網ip的 123.45.67.8 主機可以本地通路内網服務端了,那内網用戶端要怎麼登陸呢?,我們隻需要把内網用戶端的 4444 端口映射到 123.45.67.8 的 2222端口即可。

現在我們需要本地轉發了。

ssh  -CfNg   -L  2222:0.0.0.0:4444   123.45.67.8

執行完後,本地的内網用戶端 4444 端口已經和 123.45.67.8 的 2222 端口連接配接起來,然後 123.45.67.8 的 2222 端口 又和 内網服務端的 22 端口連接配接起來,成為一個完整的映射鍊。