本文轉貼自PTT
台灣最大的本土社群網站
分享這篇文章到Facebook、Google+或噗浪!


 作者  chweng ()                                                 看板  EZsoft 
 標題  [心得] SSH tunnel 穿牆術的基本應用                                     
 時間  Fri Oct 23 18:59:17 2009                                               
───────────────────────────────────────

圖文完整版:http://bbsfwdr.blogspot.com/2009/10/ssh-tunnel.html

    = 前言 =
本文旨在以淺顯易懂的方式,說明 SSH tunnel 的使用方式。透過一步一步的教學,
盡量讓所有人都能順利跟著操作此一技巧。因此內容盡量以實用導向為主,而不涉及
太過深入的理論說明及專有名詞(因為我自己也是一知半解 XD)。

    = 什麼是 SSH tunnel? =
直白來說,SSH tunnel 就是一般常見認知中所謂的跳板穿牆匿名瀏覽的技術。
透過加密及重新導向的方式,將原本被封鎖的網路封包訊息,加密後經由特定通道
傳遞,藉以避開封鎖、追蹤的機制。

    = 為什麼我需要 SSH tunnel? =
當你有以下症頭的時候,SSH tunnel「也許」會是你的救星:
  1. 學校或公司的網路只允許上網頁或收信,但封鎖了上 BBS 的功能。
  2. 特定網站(如臉書、開心農場)遭到封鎖,但其他網站仍正常。
  3. MSN 遭到封鎖,但其他網路應用仍正常。
  4. 身處一片和諧的地區,但又很反骨地想要瀏覽特定網站或資訊。
  5. 懷疑自己的 MSN 聊天訊息被封包擷取軟體竊聽了,因而想加密聊天訊息。
  6. 想要在上 BBS 的時候多一層保障,但又受限於 PCMan 一類的軟體不支援 ssh 協定。
  (註:只有與跳板之間的封包傳遞為加密狀態,跳板對外的部分仍是沒有加密的。)

    = SSH tunnel 有什麼限制? =
  1. 你還是必須有辦法與外界網路溝通,而不是整個遭到封鎖、只能瀏覽內網資訊。
  2. MIS 恰好忘了封鎖此一應用方式。
  3. 你必須擁有一台完全不受限制的主機(例如放在台灣、家裡的電腦,但
     若有 IP 分享器、防火牆的話,則須另外設定),作為轉介的跳板,供
     你與受限制的網路服務聯繫。

    = 我需要準備哪些東西? =
  1. 一台至少在你使用的時候不關機,且能正常連接所有服務的電腦。
     例如當你要透過公司受限制的網路環境上 MSN,那麼家中的電腦必須可以
     正常連上 MSN,而且上班的時候,家中的電腦必須保持開機連線。
  2. 免費、開源的 OpenSSH 軟體,本文將以 Windows 版本做說明。
     OpenSSH 官方網站:http://www.openssh.com/
     OpenSSH for Windows 官方網站:http://sshwindows.sourceforge.net/
  3. 同樣免費、開源的 PuTTY 家族軟體 - Plink
     PuTTY 官方網站:http://www.chiark.greenend.org.uk/~sgtatham/putty/

好了,落落長的前言終於結束了,如果你正好有上述的需求,那麼接下來就是
重頭戲的部分。將以盡量簡單的方式,一步一步教大家如何安裝設定。

    = OpenSSH for Windows 安裝篇 =
OpenSSH Server 必須安裝於不受限制、可正常上網的電腦上。建議用家中常用的電腦。

OpenSSH for Windows 最新的版本,是 2004 年公開的 3.8p1-1 版。
下載點:http://preview.tinyurl.com/yh3txt9 ,預覽原網址確認無誤後,
請按下 Proceed to this site. 開始下載,或至官方網站自行尋找下載點。
下載的檔案為一 zip 壓縮檔,解壓縮後可得單一的安裝程式執行檔。安裝過程中
並沒有什麼需要注意的地方,一律只要下一步、確定,就可以完成安裝了。

安裝完畢後,有幾個地方需要手動設定。
請用記事本開啟 C:\Program Files\OpenSSH\etc\sshd_config 這個檔案,
 * 找到 #Port 22 這段,並將之修改為 Port 443,別忘了要拿掉前面的 # 喔。
 * 找到 #AllowTcpForwarding yes 這段,將前面的 # 去掉。
修改完畢之後,請對照下圖紅筆框住的部分再次確認,然後存檔退出。

接著,我們要設定用來登入的帳號密碼。基於安全性的考量,用來登入的帳號密碼
是與 Windows 系統本身連動的。所以你必須至少有一個有密碼保護的 Windows 登
入帳號。為了方便統一解說,在此建議大家創立一個新帳戶專供 OpenSSH 使用。

請執行「控制台 / 使用者帳戶」,按下「建立新的帳戶」

輸入 ssh 作為帳戶的名稱、下一步

直接按下「建立帳戶」做最後確認

回到使用者帳戶的畫面後,會看到剛剛建立的帳戶名稱 ssh,點進去

按下「建立密碼」

輸入密碼並再次確認後,按下「建立密碼」

建立好 Windows 帳號後,接下來就是要將這組帳號密碼設定給 OpenSSH Server 使用。
這部分要在「命令提示字元」下進行,
因此,請先執行「開始 / 程式集 / 附屬應用程式 / 命令提示字元」。
接著,分別鍵入以下指令:

cd C:\Program Files\OpenSSH\bin
mkgroup.exe -l >> ..\etc\group
mkpasswd.exe -l -u ssh >> ..\etc\passwd

打完每一行指令完成之後,請記得按下 Enter 喔。
完成之後,看到的畫面大概是像下圖這樣,請確認是否有不正常的錯誤訊息。

最後,只要再啟動這個服務,跳板的安裝就算完成。請執行
控制台 / 系統管理工具 / 服務」,找到 OpenSSH Server 這個項目,
在這個項目上按滑鼠右鍵、選擇「啟動」,這樣就可以啟動 OpenSSH 服務了。

如果以上流程都沒有出錯,現在跳板已經可以正式運作囉。
為了保險起見,我們先自己做個簡單的測試。請下載 PuTTY 這個程式:
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
下載之後執行,分別在 Host Name 填入 127.0.0.1Port 填入 443
然後按下 Open。如下圖:

若出現安全性警告,按下「是」就可以了。

一切順利的話,你會看到一個類似命令提示字元的畫面,右上角寫著「login as:」。
請用 ssh 這個帳號名稱以及你設定的密碼登入(輸入密碼時螢幕上並不會顯示出來),
順利的話應該會看到如下的畫面,表示 OpenSSH Server 已經可以正常工作了。

到此,OpenSSH 的安裝已經完成,但是別忘了,我們還要記得這台作為跳板的
電腦的 IP,否則到了公司或學校,就沒辦法連回來囉。
取得真實 IP 的方法有很多,在這邊提供一個最簡單的,請上
http://www.myip.com.tw/ 網站,網頁上就會清楚告訴你目前使用的 IP 是多少。

以上部分是跳板的架設流程;以下則是在受限制的電腦上使用跳板的教學。

    = Plink 設定篇 =
在家中將 OpenSSH Server 設定妥當,並記下 IP 之後,到了外面,要如何
以這台跳板上網呢?這時候我們需要 PuTTY 家族的 Plink 幫忙,下載點:
http://the.earth.li/~sgtatham/putty/latest/x86/plink.exe

下載完畢後,我們要在與 plink.exe 相同的資料夾當中,建立一個批次檔
以方便使用。請先開啟記事本,然後輸入以下內容:

@echo off
start /b plink.exe -C -N -l ssh -pw 密碼 跳板IP -P 443 -D 1080 -L 23:ptt.cc:23

密碼與跳板 IP 當然請照你自己的實際狀況來填寫,可別完全照抄
基於安全的理由,上述內容的紫色部分,可以略過不要輸入。這樣每次使用的時候,
都要手動輸入登入的帳號密碼,比較不容易被其他人盜用。)
存檔的時候,請將檔名設定為 ssh.cmd,還有最重要的是,存檔類型一定要
記得改為「所有檔案」;存檔的位置則必須與 plink.exe 在一起。

存好之後點兩下,如果出現如下的視窗,表示已經順利連接跳板了。
這個視窗請千萬不可以關掉,接下來將告訴大家怎麼使用跳板。

    = 跳板應用之一 - 用來上批踢踢 =
請在 PCMan(當然你要用 KKMan 也可以啦,不用再問了)的位址列輸入 127.0.0.1
或是 localhost 進行連線。登入之後,你會發現你的故鄉會是跳板電腦的 IP,而
不是你現在使用的電腦的 IP 喔!

    = 跳板應用之二 - 用來連上被封鎖的網頁 =
以 IE 為例:請由 IE 上方工具列依次點選
工具 / 網際網路選項 / 連線 / 區域網路設定」,將
在您的區域網路使用 Proxy 伺服器」打勾,接著按下旁邊的「進階」。
然後在 Socks 的地方輸入 Proxy 位址為 127.0.0.1、連接埠為 1080。如下圖所示:

以 Firefox 為例:請由 Firefox 上方工具列依次點選「工具 / 選項 / 進階 / 設定」,
選取「手動設定 Proxy」,然後在 SOCKS 主機的部分,分別填寫 127.0.0.11080
如下圖所示:

設定成功後,可以到 http://www.myip.com.tw/ 網站檢查,會發現顯示的 IP 為
跳板電腦的 IP,而不是目前使用的電腦的 IP。此時可以試著連上被封鎖的網站,
應該就可以正常連線了。

    = 跳板應用之三 - 用來登入 MSN =
請由 MSN 主視窗的上方工具列中依次點選「工具 / 選項 / 連線 / 進階設定」,
在 SOCKS 的地方分別填入 127.0.0.11080,然後按下旁邊的測試。
順利的話,應該會出現「成功,您可以連線至 Windows Live Messenger 服務」之類的
訊息。如果原本上不了 MSN,這樣設定之後,應該就可以順利登入囉。

    = 其他相關應用 =
除了上述的幾個應用示範之外,對於其他許多不支援 Proxy / SOCKS 伺服器
設定的軟體(如大部分的線上遊戲),還可以去找 SocksCapProxifier 之
類的程式來搭配使用。

本文中並沒有對 Plink 的指令和參數做太多說明,範例中的指令僅供參考,
當然還有很多變化可以玩,有興趣的人就請自己再研究研究囉。

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.199.72
推 CHCOOBOO:圖片的BB Code修掉吧~                                   10/23 19:08
那是故意留的,用來測試自動轉寄為圖文版之後的效果,並不是從論壇轉貼的遺跡。
不過也確實會造成在 BBS 上的閱讀不便,讓我再思考一下怎麼處理...@@
推 ljuber:大推這文章~~ 雖然現在我用openvpn當跳板                   10/23 19:31
OpenVPN 一直沒試過,因為下載檔案還要註冊登入,而且似乎沒看到 Windows 版...
推 phoenixcx:不錯喔                                                10/23 20:52
推 ymore:不得不推 讚                                              10/23 21:41
推 kewang:這篇大推!!!                                           10/23 21:48
推 moonls:有看有推! 雖然我目前用不上~                              10/23 21:52
推 mshx:我用pptp server當跳板...                                   10/23 22:38
推 MikuruXshana:推~ 讚!                                            10/23 22:42
→ f5j:執行PuTTY,出現「Network error:Connection refused」 >"<     10/24 02:00
推 dansy:推好文 不過在公司的話用3G還是比較快XD                     10/24 03:42
推 ljuber:3G 還要另外的錢 用家中現有網路比較省一點XD               10/24 09:00
→ chang0206:唉,人在大陸,用這種TUNNEL的連線速度都頗不理想...     10/24 15:49
推 zaknafein:Connection refused +1                                 10/25 22:27
推 zaknafein:port 443那段的"#" 也要拿掉.....                       10/25 22:30
說明中有拿掉喔,只是沒有特別強調,很抱歉造成你的困擾,我有再改過了。
→ xvid:提供加密的vpn連線不是更方邊嗎?                            10/25 22:50
也許吧?那要來篇教學嗎?推文一句可真輕鬆愉快呀∼
推 tonyhome:「你必須擁有一台完全不受限制的主機」 有風險 危險性     10/27 13:28
→ tonyhome:萬一被駭就...                                          10/27 13:29
事實上只要開 OpenSSH 使用的 port 就可以了,況且那不是本文重點,
只是力求簡單說明而已。如果是用軟體防火牆的話,設個例外名單放行就可以了。
至於要說這樣就會被駭,未免把事情想得太容易。
推 selient:那為甚麼不用遠端桌面                                    10/28 01:12
請問這跟遠端桌面的關係在?我有哪一句叫你不要用遠端桌面嗎?
我個人懂的是相當有限,還滿希望藉由這樣的教學,拋磚引玉得到更多的經驗
分享與回應。不過目前的情況還真讓人失望啊。指出其他關鍵字的人,我也很
感謝你。至於「xx 不是更好?」或是「為什麼不用 xx?」之類的嘴炮,我想
就免了。對我而言,OpenSSH 跟 PuTTY 的價值,除了有一定的安全性之外,重
要的是免費、開源的精神。光這兩點,我就覺得不比其他選項差。而其他選項
當然也有其價值所在,根本沒有所謂誰好誰壞,有必要這樣殺個有我就沒有你嗎?
※ 編輯: chweng          來自: 140.116.199.72       (10/28 10:04)
推 ljuber:OpenVpn目前有windows版 網路上有圖文教學                  10/28 12:54
推 ljuber:遠端桌面速度不夠快.......                                10/28 15:37
推 puzi:原po不用這麼氣憤..讓懂得的人去體會吧...感謝分享!          10/30 23:33
推 xvid:提供個方法而已 吃炸藥阿... 只是單純覺得連vpn很方便         10/31 12:42
好方便的話就發個文教教大家吧!板友都會感謝你的。
噓 selient:不好意思喔原PO是吃什麼炸藥?我也覺得遠端桌面方便        11/01 23:29
→ selient:我也沒說你的方式不好,有必要回一大串?                  11/01 23:30
→ selient:遠端桌面更是淺顯易懂喔                                  11/01 23:32
我想請問你,有把「網路被限制」這個前提看清楚嗎?
當網路只剩下 port 80 可以對外時,你確定走 port 3389 的遠端桌面還能用?
不認識字還大聲嚷嚷、犯蠢還再三強調怕別人不知道,果然無知才是力量!
推 hangea:同校推 不過不用這麼生氣啊@@" 遠端桌面連線速度很不理想吧  11/03 19:17
※ 編輯: chweng          來自: 218.172.101.100      (11/07 07:47)
推 thieftwo:認真推                                                 11/13 01:30
→ xvid:VPN有什麼好寫教學的... 安裝精靈按一按就萬事ok...           12/28 23:01


----本文使用PCMAN+BBI轉貼----


※ 新版PCMAN開放測試中,新增功能:    



用PCMAN+BBI連回PTT原文