今天在看
gslin 部落格的一篇文章:
穿越公司的 FireWall,看完之後我覺得相當不錯,可以解決我想要的 forwarding 的問題,以及繞過防火牆的機制,剛剛自己測試一下,發現還蠻好用的,其實利用這個方式還可以遠端管理很多伺服器,如:
Mysql 伺服器….
SSH Tunnel必須建立於一個SSH連線上,它可以讓我們穿透防火牆,建立一個安全加密的傳輸。
例如:我們現在要透過 A主機去對 smtp 或者是 http 做連接的動作,那我們就必須先建立一個到A主機的SSH連線,然後在透過它建立 Tunnel
我們會使用到的putty和plink都可以在
這裡下載,
不過我更喜歡
pietty,由
piaip長輩製作。
底下是實際的例子:
實戰一:
1.假設我們現在要透過主機A利用 ftp 的方式連到
中正大學檔案伺服器,那我們就利用下面辦法
首先我們先開啟 pietty,然後連到主機A

2. 輸入登入的帳號密碼

3.登入之後,在工具列上的這個putty視窗按右鍵選擇Change Settings,然後選 Tunnel

4. 填入如下:
第一個 souce ports 就是你 local 端要連接的 ports,destinations 就是你要填你要前往的地方那這部份我們就填 ftp.ccu.edu.tw:21 後面接 ports

然後再按旁邊的 Add 就好了

5.然後最後按下面的 apply,就可以使用了喔
實戰二:使用plink從win32平台至某主機A, 並透過主機A連線至主機B的port 80 (httpd)
plink是putty作者提供,在win32下的命令列程式,
可以讓我們打一行指令就可以進行SSH Tunnel連線。
1. 把plink放到windows資料夾裡面(為了方便)
2. 在命令列字元打:plink -ssh -L 9000:hostB.narahuang.com:80 user@hostA.narahuang.com,如果 ssh Port 不是22,那就要加-p參數
3. 在輸入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之後的操作就跟前面差不多了。
另外可以在 FireFox 裡面可以設定走 ssh tunnel 出去,設定方式如下:
先設定 SSH 部份

Source 打自己想要的 port,destination 不要打,然後下面勾選 dynamic
FireFox 部份:

打入 localhost port 打你剛剛打的,然後走 socks v5
參考資料:
gslin長輩的 Firefox over SSH Tunnel
gslin長輩的 穿越公司的Firewall
sth-SSH Tunnel
FreeBSD Handbook – OpenSSH
SSH Tunnel
Related
Pingback: ssh Tunnel 運用在 Linux and Windows FireFox « GogoChicken()