如果兩個内網之間的linux伺服器需要互相登入,或需要互相通路内網某個端口,擔憂沒有公網IP,可以使用的方法有ngrok(https://ngrok.com/),但并不友善,我們隻需兩條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 端口連接配接起來,成為一個完整的映射鍊。