April 2004 Archives

SSH Tunnel

如果你稍微懂得一點網路上資料傳輸的原理,大概都知道在大多數的情況下,我們總是處於不太安全的狀況下。這也就是為甚麼需要 GPG 的原因。不過雖然我們經常把 GPG 拿來作為信件的加密使用,卻忽略了另一個可能發生狀況的原因。那就是收信。

當我們打開收信軟體 (mail client) 的時候,這些軟體就會經由我們所預先設定好的帳號,密碼去伺服器收取信件。當然,你也許已經想到了,我們在登入郵件伺服器的時候,我們的帳號,密碼就會經由網路封包送到郵件伺服器,然後要求登入。

沒錯,你的密碼正透過明文的方式在網路上遊覽,所有你的封包在到達郵件伺服器之前的所有站點都可能監看你的封包。想像一下,你正準備去郵局領掛號信,於是你帶著你的印章,然後把印章交給「一堆」陌生人,讓他們把你的印章拿去幫你領信,而你卻不擔心你的印鑑招人冒用。

比較好的方式,顯然是當你要收信時,先在你要收信的機器跟伺服器之間開通一條安全的隧道,也就是所謂的 ssh tunnel。如果你有終端機可以用,也就是如果你可以直接使用 ssh 到你的伺服器的話,你可以用這樣的方式:

ssh -L110:mail.server:110

這樣一來,你的機器上就把 110 號港口 (一般用來收信的港口) 跟郵件伺服器的 110 號港口利用隧道接通了。接下來,你的收信軟體則只要設定從本機 (localhost or 127.0.0.1) 的 110 號港口 (port 110) 收取信件,那麼其實你就已經透過隧道的方式,安全的從伺服器拿到信了。

可惜,一般的 Windows 並沒有終端機可以使用 ssh,那麼你可以下載 Putty 這個軟體,它也可以讓你簡單的設定 ssh tunnel。