1. 程式人生 > >SSH隧道——實現埠轉發(臨時用挺方便)

SSH隧道——實現埠轉發(臨時用挺方便)

1、ssh埠轉發?

有沒有這種需求,我在家裡需要訪問公司的某個服務。或者公司網路管的嚴,不能隨意訪問某些網站。

ssh轉發就能實現這樣的需求。它能建立隧道,把資料包在內網和外網之間進行傳遞,減少防火牆規則在你身上的作用。

注:這個隧道用的還是不太爽,直接上vpn用著才爽(我前邊寫過自己看下,看了就會自己訪問google了。能自己組建區域網了)

2、實戰:

2、1 本地轉發:在本地這臺機器上(執行這條命令的機器上)監聽一個埠,然後所有訪問這個埠的資料都會通過ssh隧道,被傳送到遠端機器上的指定埠(服務)

 

注意:上圖中的命令是錯的,並且還需要額外的步驟才能實現這種轉發功能。

ssh  -g -L 6300:123.57.28.238:80

[email protected]

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埠訪問到公司內網的某臺機器。(這裡是

192.168.1.200:80)埠。

例如:開啟瀏覽器輸入:http://123.57.28.238:6300 即可。

附加:這個還是很實用的,尤其是臨時需要連線到公司內網的時候,比如連線mysql服務,httpd服務。ftp服務就算了吧。還是自己整個vpn(我前邊寫過vpn的搭建)