ssh端口轉發,先轉載,最後自用心得


 SSH端口轉發分爲兩種,一種是本地端口轉發,又稱爲本地SSH隧道。一直是遠程端口轉發。SSH端口轉發,還必須指定數據傳送的目標主機,從而形成點對點的端口轉發。

本地端口轉發

    假定有三臺主機ABC。由於種種原因(無論是防火牆還是路由原因)AC兩臺主機之間無法連通。但是B卻可以和AC連通。這時候就可以用本地端口轉發來實現AC通過B來連通。

    A  192.168.7.27

    B  192.168.6.19

    C  192.168.30.68


6網段和7網段、30網段都相通,但是7網段和30網段不通,現在需要從7網段訪問30網段的一個web服務,可以通過本地端口轉發來實現。首先確保ABssh服務都開啓了允許轉發:GatewayPorts yesAllowTcpForwarding yes

 

A上面執行下面的命令:

ssh -l test -L 192.168.7.27:59000:192.168.30.68:80 192.168.6.19

    參數-L後面總共有四個用冒號分割的值,分別是'本地地址:本地端口:目標主機:目標主機端口'。這條命令的意思,就是指定SSH綁定本地192.168.7.2759000端口,然後指定 192.168.6.19將所有的數據,轉發到目標主機192.168.30.6880端口。


如此,我們只要在A上連接A本地地址的59000端口,就等於連上了192.168.30.6880端口。



curl http://192.168.7.27:59000/


 

    這種本地端口轉發適合於A是企業局域網機器,BC均爲廣域網上的有獨立公網IP的機器,但是企業的防火牆阻止了AC直接的通訊,但是卻允許AB通訊,這樣A就可以通過BC進行通訊。

遠程端口轉發


     假定有三臺主機ABCA是企業內部局域網的機器,B是企業內部一臺具即有私網IP又有公網IP的服務器(類似網關)CInternet上具有公網IP的服務器,A可以直接連接到CB可以直接連接A(內網),也可以直接連接C(公網),但是由於A在內網,所以C不能直接連接A,但是C可以通過B連接A

          A  10.1.6.234 

     B  114.80.130.88/10.1.10.1 

     C  119.75.218.77 

B上執行以下命令:

ssh -l taomee -p 58000 -R 10.1.10.1:59000:10.1.6.234:80 119.75.218.77

C上執行以下命令:

curl http://10.1.6.234



=======================================================

轉載源地址:http://my.oschina.net/guol/blog/115235

=======================================================

我的情況是有A和B之間有專線/***,可以互相訪問內網IP,C是亞馬遜RDS,B和C之間有***,可以以內網IP訪問,但A不能訪問C,現在A要訪問C,以B做爲代理做本地端口轉發

最後自用的命令:(在代理機器上跑)

ssh -l root -fNL 0.0.0.0:3306:MYSQL:3306 10.3.211.226

root是登錄代理機器B的用戶名

0.0.0.0:3306訪問代理機器的3306端口會轉發到C

MYSQL是訪問不到的數據庫C

10.3.211.226是代理機器B的IP

-fN是後臺運行


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章