SSH 本地端口轉發


  有時,綁定本地端口還不夠,還必須指定數據傳送的目標主機,從而形成點對點的"端口轉發"。為了區別后文的"遠程端口轉發",我們把這種情況稱為"本地端口轉發"(Local forwarding)。

  假定host1是本地主機,host2是遠程主機。由於種種原因,這兩台主機之間無法連通。但是,另外還有一台host3,可以同時連通前面兩台主機。因此,很自然的想法就是,通過host3,將host1連上host2。

  我們在host1執行下面的命令:

$ ssh -L 2121:host2:21 host3

  命令中的L參數一共接受三個值,分別是"本地端口:目標主機:目標主機端口",它們之間用冒號分隔。這條命令的意思,就是指定SSH綁定本地端口2121,然后指定host3將所有的數據,轉發到目標主機host2的21端口(假定host2運行FTP,默認端口為21)。

  這樣一來,我們只要連接host1的2121端口,就等於連上了host2的21端口。

$ ftp localhost:2121

  "本地端口轉發"使得host1和host3之間仿佛形成一個數據傳輸的秘密隧道,因此又被稱為"SSH隧道"。

下面是一個比較有趣的例子。

$ ssh -L 5900:localhost:5900 host3  

  它表示將本機的5900端口綁定host3的5900端口(這里的localhost指的是host3,因為目標主機是相對host3而言的)。

  另一個例子是通過host3的端口轉發,ssh登錄host2。

$ ssh -L 9001:host2:22 host3

  這時,只要ssh登錄本機的9001端口,就相當於登錄host2了。

$ ssh -p 9001 localhost

  上面的-p參數表示指定登錄端口。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM