來寫篇SSH Tunnel的教學,
以最基本最基本的為主,先不考慮任何進階的用法。
架構如下
一般來說經由正常方式連線,中間容易被第三者竊聽,除非是經過HTTPS等加密的Protocol
如果像是MSN或HTTP則是可以一覽無遺,
例如firesheep則是在未加密的無線網路環境竊聽http packet,
還順便幫你整理好讓你不用去看packet structure。
透過Tunnel連到Internet,分成兩個部份來看
Client到SSH host端經過加密,因此中間的第三者唯一能看到的是你連線到SSH Host
但他無法得知你中間到底傳什麼?
但SSH Host以及SSH Host到Internet之間還是可以竊聽,
端看你對於SSH Host的信任程度。
因為我們只要避開已知的竊聽者:)
Requirement:
- Putty (SSH Client, http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe)
- SSH Host
執行Putty的畫面,Host Name填入SSH主機的位址, Saved Sessions填入名稱,以便之後可以直接連線不用再設定一次,但還沒設定完... Tip: 在Host name輸入帳號@主機位址,代表要直接以指定帳號登入,登入時就不會再詢問帳號 |
按下Open後會提示問帳號跟密碼,如果前面設定Host name時有指定帳號,這裡就不會再詢問帳號 這張圖片中我把許多資訊拿掉了,因此很多地方是黑的XD |
登入後,Putty就可以先縮小放著不管了,除非你有要做其他操作? 接著開啟命令提示字元,輸入指定Netstat -an 這個指令會列出目前這台電腦的所有連線,在這當中尋找一個127.0.0.1:8080 後面跟著IP為0.0.0.0:0 狀態為Listening 代表已經成功讓Putty變成Socks Server,並且已經在傾聽狀態 |
接著,設定需要經過Socks Server的程式
首先設定IE的Proxy,許多Client的Proxy有個自動取得,即是refer到IE的Proxy設定
開始→控制台→網際網路選項
或是IE的工具列→工具→網際網路選項
若瀏覽器是Chrome,選項→進階選項→變更代理伺服器設定
切換到連線分頁 |
連線→區域網路設定 |
勾選"在您的區域網路使用Proxy伺服器" 位址跟連接埠空白,接著點進階 |
在Socks的欄位,位址填127.0.0.1,連接埠填入8080 127.0.0.1是指本機的意思,因為我們在同一台電腦上開啟Socks Server 8080則是在前面設定SSH tunnel時開啟的連接埠 |
工具→選項→連線分頁→連線設定 |
MSN的Proxy可以設定Http Proxy或Socks Proxy 在更新MSN前印象中MSN可以直接走IE設定的HTTP Proxy 但更新後好像沒有辦法?因此還是要獨立設定SOCKS Proxy 設定方式跟前面類似,設定好之後可以按下測試看看是否設定正確 |
設定之後,我們可以藉由Netstat來看看連線的狀況 一樣開啟命令提示字元,打netstat -an 若有與127.0.0.1:8080建立連線就代表正常 |
或透過小工具 Sysinternals出的TCPView 不過Sysinternals被Microsoft買下來了:~ http://technet.microsoft.com/en-us/sysinternals/bb897437 圖片中可以看見不同的程式透過127.0.0.1:8080連線出去 |
以上,就是最基本的SSH Tunnel設定,進階版則包括以下設定
- Putty設定自動登入(設定Putty的Private Authentication Key)
- 利用plink在command line模式直接連線
- 搭配wifi manager的功能實現不同網路直接建立Proxy並且更換設定(例如像我設定好連上公司無線網路後,自動開啟連線建立Socks proxy,並切換Proxy到指定proxy)
以上,有需要再自己想辦法XD