The Old Blog Archive (Traditional Chinese), 2004-2009

SSH頭腦體操(完結篇)

前一次提到,透過兩次ssh -L,我們便可以抵達一次ssh -L無法抵達的地方。這種串接有一個相當實用的地方,就是建立一個透明的虛擬安全通道(transparent virtual secure tunnel)。好比說,我們原來想與server1建立一個secure tunnel,可是因為某些原因,我們無法抵達server1(或者我們不信任通往server1的線路),這時候我們可以透過server2,建立一個通往server1的SSH port的-L forwarder。既然ssh -L會在client(我方,也就是localhost)這端開啟某一個port,那麼我們只要把原本欲連往server1的ssh,轉向對著localhost的那個port開去,就可以(藉由走server2這條路)通到server1了。

例如,原本是希望ssh server1的。我們希望經由server2建立一個virtual secure tunnel:

ssh -L 8888:server1:22 server2

此時,我方(localhost)的8888,等於變成了直通server1的port 22的管道。

於是,ssh server1就可以改寫成:

ssh -p 8888 localhost

一個應用的範例是,假設我們僅有一台可供ssh -R的機器(稀有資源),而我們無法直接建立通往該機器的secure tunnel,此時我們可以透過另一台機器,建立這個secure tunnel,再將我們希望通往該機器的通路,建築在這個secure tunnel上。如以下圖示(click to enlarge):

Mind-Bogging SSH (ssh -R over ssh -L)

5 Responses to “SSH頭腦體操(完結篇)”

  1. on 02 Jun 2006 at 16:02tsechingho

    好奇的是當 ssh -R 9999:localhost:6942 listener 不通時, 這樣連線到 listener 是否是因為 localhost 的 IP 被 listener 擋掉而middleway 沒有? (藉此保護 listener 的連線?)

  2. on 02 Jun 2006 at 16:15lukhnos

    這也是一種可能。:)

  3. [...] ssh 頭腦體操 (1) (2) (3) [...]

  4. [...] http://lukhnos.org/blog/zh/archives/313 [...]

  5. on 06 Jun 2006 at 23:34sshlog » 20060606

    [...] SSH 頭腦體操 (1) (2) (3) [...]