簡單的說,SSH Tunnel可以幫助我們穿越不被信任的網路,
從而在我們設定的路徑中得到加密的傳輸。
SSH Tunnel必須建立於一個SSH連線上
所以說當我們希望使用SSH Tunnel對A主機進行POP3的傳輸,
必須先建立一個到A主機的SSH連線,再透過它來建立Tunnel。
我們會使用到的putty和plink都可以在這裡下載,
不過我更喜歡pietty,由piaip長輩製作。
實戰一:使用putty從win32平台連線至某主機A, 並使用 SSH Tunnel進行安全的POP3傳輸
- 使用putty連線至主機A
- 在工具列上的這個putty視窗按右鍵選擇Change Settings
- 在Tunnels分頁,Source port是用來當作local端的連線,在這邊用8888
- Destination填 hostA.narahuang.com:110, 也就是主機A的POP3 port
- 到Session分頁去把這個設定存在某個Session裡
- 按Apply完成設定
使用ssh連線到主機A,這時候在命令列下使用netstat -na就會發現我們剛剛設定的port 8888已經開始listen,在郵件軟體設定向localhost:8888,並使用主機A上的帳號密碼來收信,可以成功收信的話就是成功了。
實戰二:使用plink從win32平台至某主機A, 並透過主機A連線至主機B的port 80 (httpd)
plink是putty作者提供,在win32下的命令列程式,
可以讓我們打一行指令就可以進行SSH Tunnel連線。
- 把plink放到windows資料夾裡面(為了方便)
- 在命令列字元打:plink -ssh -L 9000:hostB.narahuang.com:80 user@hostA.narahuang.com
- 在輸入user在hostA的密碼之後,就進到hostA的Shell,這時候通到hostB的SSH Tunnel就完成了。
使用瀏覽器連線 http://localhost:9000/ ,若是可以連線到主機B就是成功了。
但是要注意的是,這段連線中安全的部分只有從local到hostA,從hostA到hostB這段是沒有加密的。
實戰三:從Unix-like的Shell開啟SSH Tunnel至hostB的POP3 port
$ssh -N -f -L 9000:hostB.narahuang.com:21 user@hostB.narahuang.com
-N 參數的用途是"不建立shell"
-f 參數的用途是"連線後執行於背景"
輸入完密碼後即會回到原來的shell,建立Tunnel之後的操作就跟前面差不多了。
參考資料:
gslin長輩的"穿越公司的Firewall"
sth-SSH Tunnel
FreeBSD Handbook - OpenSSH
歷史上的今天:
再附一個說明也很簡潔的文! 出處: http://blog.roga.tw/2009/07/03/2262
+=====================================================================+
建立 SSH Tunnel 突破防火牆限制
到 PuTTY 官網下載 plink
在 Comman Prompt 下面執行:
plink -ssh -L 80:Lab3.tw:8080 -C roga@roga.tw -P 22
以上寫法解釋一下:我在 Local 端開了一個 Port 80 ,然後 roga.tw 會幫我轉到 Lab3.tw:8080 。(並且 Local 到 roga.tw 有加密),非常好用。適用於沒有過濾封包類型只有擋住連接埠的防火牆。
舉例來說,如果你要上 BBS 可以這樣做:
plink -ssh -L 23:ptt.cc:23 -C roga@roga.tw -P 22
然後 telnet Local 端的 port 23 就可以上了。
沒有留言:
張貼留言