SSH隧道——實現埠轉發(臨時用挺方便)
1、ssh埠轉發?
有沒有這種需求,我在家裡需要訪問公司的某個服務。或者公司網路管的嚴,不能隨意訪問某些網站。
ssh轉發就能實現這樣的需求。它能建立隧道,把資料包在內網和外網之間進行傳遞,減少防火牆規則在你身上的作用。
注:這個隧道用的還是不太爽,直接上vpn用著才爽(我前邊寫過自己看下,看了就會自己訪問google了。能自己組建區域網了)
2、實戰:
2、1 本地轉發:在本地這臺機器上(執行這條命令的機器上)監聽一個埠,然後所有訪問這個埠的資料都會通過ssh隧道,被傳送到遠端機器上的指定埠(服務)
注意:上圖中的命令是錯的,並且還需要額外的步驟才能實現這種轉發功能。
ssh -g -L 6300:123.57.28.238:80
6300是執行這條命令的機器上的繫結埠,123.57.28.238:80是遠端機器上的80埠(我就通過內網機器的6300埠把資料包從ssh隧道傳到123.57.28.238:80服務上去),而隧道是本地和遠端[email protected]建立的連線。
這樣你就可以從公司內網通過那個繫結6300埠的機器訪問123.57.28.238這臺電腦的80埠。
-g 引數是為了能為內網中的其他使用者也轉發資料包到123.57.28.238:80上。預設是不為其他伺服器轉發的。
或者修改/etc/ssh/ssh_config 檔案開啟GatewayPorts=yes 也可以開啟為其他使用者轉發的能力(記得重啟sshd服務才會生效:/etc/init.d/sshd restart)。
例如:開啟瀏覽器輸入http://192.168.99.200:6300 ###注意換成你的上邊那臺機器的ip地址。這樣你就可以逃過運維設定的防火牆。
2、2遠端轉發:在公網的某臺機器上監聽一個埠,這樣你就可以通過公網的ip訪問你們公司的某個機器上的服務。
記得/etc/ssh/sshd_config檔案中GatewayPorts=yes(重啟sshd服務,/etc/init.d/sshd restart)。
執行命令:ssh -R 6300:192.168.1.200:80 [email protected] 後就可以實現,
外網通過123.57.28.238那臺機器的6300埠訪問到公司內網的某臺機器。(這裡是
例如:開啟瀏覽器輸入:http://123.57.28.238:6300 即可。
附加:這個還是很實用的,尤其是臨時需要連線到公司內網的時候,比如連線mysql服務,httpd服務。ftp服務就算了吧。還是自己整個vpn(我前邊寫過vpn的搭建)