PuTTY - SSH Tunnel 運用備忘

来源:百度文库 编辑:神马文学网 时间:2024/04/29 08:01:51
PuTTY 除了能讓 Windows 平台以 ssh 通訊協定連入 Unix-Like 作業系統之外, ssh 連線後的通道還能達成許多目的, 如: 突破防火牆封鎖、防止網路封包竊聽、遠端存取防火牆內資源等等. 例如員工出差透過 ssh 安全通道連回公司存取資料, 以確保資料安全.
常見的 SSH Tunnel 運用如下:
透過 proxy 安全上網、讓 msn 突破防火牆封鎖 連入 smtp、pop3、vnc (遠端桌面)、samba (網路上的芳鄰)
ssh server 環境:
Unix-Like 作業系統 + ssh daemon Windows 作業系統 +cygwin with sshd內建 sshd 的 IP 分享器
client pc 環境:
下載 PuTTY, 將 putty.exe 置於 C:\Windows\System32 目錄中, "開始"→"執行" 或 "命令提示字元模式" 中輸入 putty 即可執行
實例一: 使用 proxy (代理伺服器)
目的: 避免被監聽 URL、蒐集密碼
↓啟動 PuTTY, 輸入 sshd host 網址

↓切換到 Connection -> SSH -> Tunnels 畫面, 輸入 Source port: 8080 (自訂), Destination: proxy server 的 IP 和 Port, 輸入完畢記得按 "Add"

↓如有需要, 可回到 Session 畫面儲存 (Save) 設定值, 以後執行 PuTTY 時可直接讀取 (Load) 設定值. 在任何畫面按 "Open" 即可以目前設定進行連線.

↓登入 sshd host 後, 將視窗縮到最小, 保持 ssh 連線

↓開啟瀏覽器, 設定 proxy 為: localhost:8080 以 IE 為例: 工具→網際網路選項→連線→區域網路設定

設定完畢回到瀏覽器主畫面, 開始透過 ssh 安全通道瀏覽網頁
實例二: MSN Messenger
目的: 突破公司防火牆限制、避免被側錄聊天內容
↓PuTTY 設定: Source port: 1080; Destination: 空白, Dynamic 設定完畢記得按 "Add" (其他 PuTTY 操作同上述)

↓MSN Messenger 設定: 工具→選項→連線→進階設定→只勾選 SOCKS 5 版, 伺服器: localhost, 連接埠: 1080

實例三: Outlook Express
目的: 避免被攔截信件內容、蒐集密碼
↓PuTTY 依序設定: Source: 25, Destination: smtp.host.ip:25; Source: 110, Destination: pop3.host.ip:110 (都是 Local)

↓Outlook Express 設定: POP3: localhost; SMTP: localhost

實例四: 網路上的芳鄰
目的: 存取遠端檔案分享資源
↓新增硬體: 網路介面卡 -> Microsoft -> Microsoft Loopback Adapter

↓取消勾選 "File and Printer Sharing for Microsoft Networks", 點選 "Internet Protocol (TCP/IP)" -> "內容" 進行下一步設定

↓設定 Loopback Adapter IP 位址為: 10.0.0.1 / 255.255.255.0, 點選 "進階" 進行下一步設定

↓點選 "停用 [NetBIOS over TCP/IP]", 按確定完成所有設定後, 重新啟動電腦.

↓PuTTY 設定: Source port: 10.0.0.1:139; Destination: samba.server.ip:139 或 其他 windows 分享電腦 : 埠號 139

↓連線網路磁碟機: 直接把 10.0.0.1 當成一般 Windows 分享電腦即可

後記:
若遭防火牆擋 22 port, 可將 ssh server 改成 80 port 若要防止公司內部人員使用 PuTTY + ssh 通道搞怪, 可於Linux NAT + Layer 7 防火牆 擋掉 ssh 通訊協定:
iptables -A FORWARD -m layer7 --l7proto ssh -j DROP
參考資料:
PuTTY 的應用 -- proxyBreaking Firewalls with OpenSSH and PuTTY如何利用SSH隧道穿越你的企业级防火墙只需HK$500就可以突破公司防火牆命令列下的MSN - pebrot
Posted by Jamyy at 2006年01月10日 17:38
Trackback Pings
TrackBack URL for this entry:
http://cha.homeip.net/cgi-bin/mt/mt-tb.cgi/159
Comments
請問在cygwin裡面如何把port22改成80??
我直接在putty裡面,把port改成80,是不能使用的
麻煩你教導我一下
謝謝
Posted by: qmo at 2006年04月18日 00:47
在 Cygwin 啟用 sshd, 並將 ssh port 改成 80 的方法:
1. 執行 setup.exe, 勾選 Net → openssh
2. 進入 Cygwin, 執行 ssh-host-config 產生 sshd_config
3. cd /etc; chown 你的帳號 sshd_config
4. notepad sshd_config 將 Port 22 改成 Port 80
5. chown system sshd_config
6. cygrunsrv --start sshd 啟動 sshd
7. 控制台 → Windows 防火牆 → 例外 → 新增連接埠 → 名稱: cygwin-sshd, 連接埠編號: 80 (TCP)
這樣你的 Windows XP SP2 就能在 TCP 80 聆聽 ssh 連線了
Posted by: Jamyy at 2006年04月18日 10:31
您好,我如何可以驗證我的MSN與HTTP連線是在SSH下??謝謝
Posted by: link at 2006年07月19日 15:12
您好! 這真是個好問題!
首先請安裝免費的封包分析軟體: Ethereal (http://www.ethereal.com/)
監聽自己電腦出入的封包
關於 MSN 的部份:
一般 MSN 通常會連到某 IP 的 1863 或 80 Port. 如果封包分析結果, 封包是連入您的 sshd host 而不是不明的其他 IP, 就表示您的 MSN 是透過 SSH Tunnel 連線的.
關於 HTTP 的部份:
一般 HTTP 連線是直接連入對方站台或連到指定的 Proxy Server, 如果封包分析結果是連入您的 sshd host 而不是其他的 IP, 就表示您的 HTTP 連線是透過 SSH Tunnel 的.
封包分析過程中請不要在 Putty 視窗中輸入文字, 且應避免使用其他網路連線軟體, 以避免產生過多無謂的封包資訊, 造成分析上的困擾.
Posted by: Jamyy at 2006年07月19日 16:20
我在WINDOWS XP下安裝完之後,系統不讓我更改ssh-host-config,而且我看檔案屬性並不是read only,但在檔案內容的安全性裡面卻是屬於everyone的只讀,且不能更改,也不能新增或是修改擁有者,請問你知不知道如何讓他可以被編輯?
Posted by: CharlieChang at 2006年08月18日 12:29
若 /etc/sshd_config 的 owner 是 system, 須先變更 owner: chown $USER sshd_config 才能編輯 sshd_config. 修改完後記得將 owner 回復為 system: chown system sshd_config, 最後再重新啟動 sshd service 即可
詳情請參閱: /blog/archives/2006/04/_winxp_cygwin_s.html
Posted by: Jamyy at 2006年08月18日 15:07
可是windows xp並沒有chown這個指令,
而由檔案總管要去修改擁有者也發現不讓我修改
這實在是很奇怪的事,
一般而言windows xp下面的administrator使用者是可以改檔案擁有者,但是這程式的etc目錄下很多檔案連administrator也不能修改檔案擁有者.
Posted by: CharlieChang at 2006年08月18日 17:33
讀了上面的文章幾次, 我還未能login MSN。
我是用學校的無線網絡,
IE上網用PROXY 172.16.0.2 PORT:8080
BT用SOCK4A 172.16.0.2 PORT:1080也沒有問題。
那我應該怎樣SET PUTTY呢?
Posted by: WilliamChun at 2006年09月26日 18:14
您好!
Windows Live Messenger 似乎無法利用 SSH Tunnel 的 SOCKS proxy 連線
您可利用本文 "實例一" 改以 HTTP proxy 的方式來解決
updated: Windows Live Messenger 是可以透過 socks 連線的, 詳見下面 (2006年12月19日) 的內容
Posted by: Jamyy at 2006年09月26日 20:25
我已經試過方法一, 但不成功, 當我按下open時, 一個錯誤訊息由cmd出現:
Network error: Connection refused
我在學校是有用戶的, 會否需要嗎?
Posted by: WilliamChun at 2006年09月26日 21:08
這訊息看起來是 ssh 的連線被拒絕
請問您是否可用 putty 直接連入 sshd host 呢? (不做 ssh tunnel, 直接的 ssh 連線登入)
如果不行的話, 就要檢查防火牆、sshd_config 等相關設置了
Posted by: Jamyy at 2006年09月26日 22:22
請問連結時常出現"Network error:Software caused connection abort",然後就斷線,這是怎麼一回事呢??
Posted by: wen at 2006年10月20日 13:49
以下是幾個解決方案, 請參考:
1. 在 PuTTY 的 Connection 項目中設定 "Sending of null packets to keep session active", 也就是每隔幾秒傳送一個 null packet 讓 session 不會 timeout
2. 啟用 sshd host 的 /etc/ssh/sshd_config 設定值: TCPKeepAlive yes
3. 確認網路連線品質是否穩定
Ref: http://www.tartarus.org/~simon/puttydoc/Chapter10.html#errors-connaborted
Posted by: Jamyy at 2006年10月20日 16:45
我想問 : 要MSN 我要架設自己 local host ssh server 嗎?
那怎樣建立 ssh tunnel ...吧跟你的方法做了後要 connect 去 ssh server 嗎?有沒有 free 的
Posted by: BB at 2006年12月03日 13:27
透過 SSH Tunnel 使用 MSN 的時機為:
1.被公司/學校封鎖 MSN 軟體
2.不想被公司/學校監看聊天內容
基本原理是以 SSH 通訊協定連入遠端主機後
讓其他軟體透過這條通道, 從遠端主機連線到目的地
達到突破防火牆與加密傳輸的目的
假設你在公司無法使用 MSN 軟體
你可以在家裡架設 ssh server
使用 Linux 或 Windows 平台都可以
(Windows 平台架設方法請見:
/blog/archives/2006/04/_winxp_cygwin_s.html)
以上提到架設 ssh server 的軟體都是免費的 (Windows 除外 :)
Posted by: Jamyy at 2006年12月03日 22:07
從以前我用 socks 的方式都可以進行連線,現在也不例外 ;)。我使用的版本為 Windows Live Messenger 8.0.0812.00
Jamyy 要不要再去 check 一次呀?只是對 comment 有點疑惑 :D
Posted by:snese at 2006年12月18日 22:42
呵, 真的可以耶~~ 我的版本也和你一樣
不過之前真的不行哩, 大致歸納一下可能的原因:
1. 之前的實驗可能漏了某些細節, 讓我以為真的沒成功 (可能性很低 :P)
2. 之前所測試的 MSN Live Messenger 版本可能有問題 (可惜沒記下版本號碼)
3. 那台測試的電腦最近從 SP1 昇級到 SP2, 並加裝了 .NET Framework & .NET Framework Hotfix, 啟動 MSN Live Messenger 時發現它自己正在 upgrade, 不曉得是不是因為這樣修正了 socks 連線問題
謝謝你告訴我這個訊息, 順便 update 之前的 comment :)
Posted by: Jamyy at 2006年12月19日 09:18
請問透過ssh使用VNC設定方面 ,
我架設一台linux vnc+ssh server ,
已經可在windows下正常使用vnc得到linux桌面,
但是加上ssh以後卻不能成功 請問可以指導一下嗎 ?
在putty裡頭的設定是
source port = 5901
Destination = localhost:5901
連線後,在vncviewer上打入localhost:5901
卻顯示無法連線 ...
請問有邏輯思考錯誤嗎 ?
謝謝指導 !
Posted by: kent at 2007年03月06日 00:25
連結 5901 port 在 vncviewer 表示為 :1
5902 port 是 :2 依此類推
所以連結本機 5901 port 的正確寫法是 localhost:1
ps. 標準 port 5900 是 :0 或省略之
Posted by: Jamyy at 2007年03月06日 10:23
謝謝Jamyy 謝謝解答 ,
我已經將localhost:5901 改成 localhost:1
但是每次開VNCVIEWER 連接端鍵入 localhost:1
仍然顯示 unable to connect to host : Connection refused.
我真的不知道該從哪方面著手..
給已給予一盞明路嗎 ...
感激您的回覆 !
謝謝您!
Posted by: kent at 2007年03月06日 23:39
u'r welcome :)
首先要先確認 linux 電腦的 vncserver 是否正確運作
可參考: /blog/archives/2005/08/realvnc_vs_linu.html
再來是確認 ssh tunnel 設置是否正確:
Source port: 5901
Destination: localhost:5901 (或 target_ip:5901)
(記得按 Add)
最後是確認 vncviewer 的連線目標應為 localhost:1
Posted by: Jamyy at 2007年03月07日 09:04
成功了,(其實我的putty沒有login,)
謝謝您細心的指導!!
受益良多!!再次感激!!
Kent
Posted by: kent at 2007年03月07日 16:06
請問
假設公司無法使用 MSN 軟體
可不可以將自己公司的電腦架成ssh server
然後再直接用這台電腦使MSN上線
謝謝
Posted by: ggg at 2007年05月17日 21:07
本機的話, 建議您用 cygwin + squid 的方式
請參考: /blog/archives/2006/04/_winxp_cygwin_s.html
(請省略 sshd 的部份, 直接裝 squid 即可)
先啟動 squid, 再執行 msn, 將連線方式改用 http proxy, 指向 localhost 的 3128 port
Posted by: Jamyy at 2007年05月18日 13:13
你好, 我可以引用你的文章嗎? 我可能更改部份內容, 如果不介意的話請回個信給我, 謝謝唷^^
Posted by:無極 at 2007年06月04日 23:51
您好, 已回覆至您的信箱, 謝謝 :)
Posted by: Jamyy at 2007年06月05日 09:18
你好, 我已經引用到 http://discuz.orz101.net/viewthread.php?tid=433 了, 如有侵權麻煩告知喔.. ^.^
Posted by:無極 at 2007年06月25日 00:47
無極兄, 您寫得真好, 很用心喔! :)
Posted by: Jamyy at 2007年06月29日 12:53
您說可以用Linux NAT + Layer 7 防火牆擋掉, 看您的 rules, 是偵測 header 然後把是 ssh 的協定封包丟掉. 請問有什麼辦法可以 bypass 這個問題嗎?
Posted by: orange at 2007年08月09日 08:54
如果只限制區域網路內的使用者不得向外連線 tcp 22 port
那麼他們只要把 sshd 改個 port (如: 80)
就破解了這個限制
所以最好的辦法就是透過 l7-filter 封鎖從內部出去的 ssh protocol
那麼不管使用者以 ssh 連出去到哪個 port
都會被擋掉
以 "FORWARD" chain 來 drop ssh protocol 封包
只會把行經本機的 ssh 連線擋掉, 並不會禁止連入本機的 ssh 連線
所以如果這台 Linux NAT 能被使用者以 ssh 登入的話
還是可以被用來做 ssh tunnel
不過我不懂您說的 "bypass 這個問題" 是指哪個問題?
Posted by: Jamyy at 2007年08月09日 09:33
可以請問一下,如果沒有proxy server的話
要如何走ssh tunnel來瀏覽網頁呢?
Posted by:司馬雲 at 2007年09月07日 22:57
在Windows下可以用freeSSHd做ssh server的啦 XD
http://freesshd.com/
>可以請問一下,如果沒有proxy server的話
>要如何走ssh tunnel來瀏覽網頁呢?
在ssh client端用polipo吧
跑"polipo socksParentProxy=localhost:1080"(不連引號)把HTTP經SSH由另一邊送出。
http://www.pps.jussieu.fr/~jch/software/files/polipo/
Posted by:Roy at 2007年09月10日 12:35
可否請你解釋一下再Tunnel下要Add port時 這destination指的是哪?
你針對不同的應用有不同的destination
在這篇中用的是選擇Dynamic而沒有指定destination
Posted by: wildeny at 2007年11月15日 14:11
您說的沒錯, 不同的應用有不同的 destination
所以在本篇的應用實例中:
1. Proxy Server → dest 要指向 proxy server 的內部 ip:3128port (squid 預設埠口為 3128)
2. MSN Messenger SOCKS → 不需指定 dest
3. Outlook Express → dest 要指向 mail server 的內部 ip:25/110port
4. Windows 網路分享 → dest 要指向分享電腦的內部 ip:139port
Posted by: Jamyy at 2007年11月15日 14:21
你好!
想請教一下,如果使用 cygwin with sshd 在自己的電腦架設一個 SSH 伺服器的話,是不是有可能透過 SSH Tunnel 突破 ISP 對 BT 的封鎖?
因為我現在遇到的問題是,ISP 會偵測 BT 的封包,並對其降低優先權 (也就是 Traffic Shaping),因此我想說是不是可以透過 SSH Tunnel 來突破 ISP 的 Traffic Shaping。
Posted by:joaoko at 2007年12月02日 21:55
joaoko 您好,
可以, 只要 sshd host 所使用的線路沒有被 isp 限制 bt 就行得通
假設您所在的 A 線路是被限制的, 只要透過 ssh tunnel 到 "使用 B 線路的 sshd host", 就能利用 B 線路來盡情使用 bt
設定方法請參考:
http://whalesalad.com/2006/08/27/tunneling-bittorrent-over-ssh/
Posted by: Jamyy at 2007年12月02日 22:59
謝謝你的答覆。
所以也就是說,我所在的 A 線路是被限制的,那麼如果我在 A 線路架設一個 SSH Server 並用它做 tunelling 的話是沒有用的。
這樣我懂了,再次感謝 :)
也謝謝你傳給我的那篇文章網址。
Posted by:joaoko at 2007年12月03日 10:52
請問使用網際網路選項→內容→限制網頁的密碼如何破解,我這個大白痴竟然忘記自己設的密碼....Orz
Posted by: lutin at 2007年12月13日 00:02
請執行 regedit, 到:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies
將 Ratings 機碼整個刪除即可
Posted by: Jamyy at 2007年12月14日 00:28
jamyy你好
我參考你的文章後建立了一個windows ssh server
用自己的2台電腦測試後 可以正常連線ssh server
我很確定我的windows內建防火牆已完全關閉
port已改成80
由於我當ssh server的主機是完全對外的網路環境所以我並沒有設置proxy server
我不清楚是因為我測試用的2台電腦 是插在同一台數據機下面是否藉此連成區網導致可以正常連入ssh server
但從被封鎖的網路環境 只能建立連線 但不能看到登入畫面
若可以連上大部分網頁是否可以依此確定其有開放 port80
因我在被封鎖的環境使用netstat 是可以看到有建立到ssh server的連線 但putty的視窗只有一片黑 無法登入
過了一段時間後跳出server unexpectedly closed network connection
可否請你有空的時候指點一下 有何辦法解決
感謝你
Posted by: Leoric at 2007年12月31日 08:43
Leoric 您好,
您可以用以下指令測試是否能連入 ssh server:
telnet your.ip.address 22
如果畫面出現 SSH...OpenSSH... 這樣的字眼
表示一切正常, 可用 putty 正常連入 ssh server
server unexpectedly closed network connection
有可能是 sshd 解析來源 ip 時發生 timeout
可以編輯 sshd_config, 設定 UseDNS no, 再重新啟動 sshd 即可
Posted by: Jamyy at 2008年01月04日 10:22
frome site :http://cha.homeip.net/blog/archives/2006/01/putty_ssh_tunne.html