1. 程式人生 > >SSH 內網端口轉發實戰

SSH 內網端口轉發實戰

服務器 linux 密碼 用戶 認證

導讀大家都知道SSH是一種安全的傳輸協議,用在連接服務器上比較多。不過其實除了這個功能,它的隧道轉發功能更是吸引人。

如果兩個內網之間的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 端口連接起來,成為一個完整的映射鏈。

本文原創地址:http://www.linuxprobe.com/ssh-network.html


本文出自 “小華的博客” 博客,請務必保留此出處http://coderhsf.blog.51cto.com/12629645/1942582

SSH 內網端口轉發實戰