今天在看 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連線。
- 把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
See also
- 在 Mac 建立新帳號,並且開通 ssh 權限
- SSH agent forwarding 教學
- OpenSSH 安全性漏洞 CVE-2016-0777 and CVE-2016-0778
- Ruby Deploy With Capistrano 碰到 SSH Connection Closed
- [筆記] 在 Ubuntu mount DVD ISO 檔案
- Geany 編輯器搭配 sshfs 參數注意事項
- AWS 機器上 duplicated RPM 問題
- 安裝 XCache 加速 PHP 執行速度
- Linux 程式開發編輯器 Geany + Fuse 遠端掛載
- 好用 PHP debug extension Xdebug on FreeBSD 安裝