2008年11月10日

[突破辦公室網路] ssh tunnel + Firefox Foxy Proxy

最近很多同事轉換跑道,到了新公司後,頻頻抱怨上個網都被擋 (ISP公司還檔上網感覺蠻好笑的)
於是想了用SSH Tunnel的方式來解
前置需求:
1.需要自己有一台有裝SSH服務的主機在Internet, 至於OS不限 (Linux當然最好,Windows也沒關係,加裝 OpenSSH就可了)
2.公司需要有一個可以連到外面的那台主機的, 請自己嘗試, 如果SSH預設的22 port被公司檔了, 就把SSH Server Listen 的Port改掉就好了
3.由於個人使用的多是微軟作業系統,所以以下的情境是用WindowsXP配合Putty的DOS版工具plink

目前我想到的有兩種應用方式:
A. 全部透過SSH Server來上Internet (適用於瀏覽器, MSN等可設定socks proxy的應用)
在Dos 視窗下輸入
plink -ssh -D 9005 -pw 密碼 -N taiwanwolf@ssh_server_ip
(-D 是指定Port forward用的Port, -pw 就是ssh登入的密碼, -N 就是不要帶出shell, 如此就可以做成 bat 檔來直接執行)
接下來設定Client
IE:[工具] -> [網際網路選項] -> [連線] -> [區域網路設定] -> Proxy伺服器打勾 -> [進階] ->
Socks 設定為 localhost , 連接埠設定為 9005
Windows Live Messenger: [工具] -> [選項] -> 連線 -> 進階設定 -> Socks 設定為 localhost : 9005 然後點選測試應該就可連線
Firefox (推薦) : 安裝FoxyProxy的Addons,按照下列圖解設定






































上面的 9005 是自訂的Port , 自己找一個本機沒在使用的Port就可以, 而taiwanwolf為在該SSH Server可登入的帳號名稱,這樣輸入並登入成功後,所有經過瀏覽器的動作, 都會往本機的9005 Port送,再被PortForward透過SSH Tunnel從SSH server出去了, 在網管端只會看到你與SSH Server有一個22 Port的連線

B. 連到某台機器 (適用telnet等無法設定proxy的應用, Port要對應)
在Dos 視窗下輸入 plink -ssh -L 9005:要連線的IP:23 taiwanwolf@ssh_server_ip
登入成功後, localhost 的9005 Port 就對應到 "要連線的IP"的23 Port, 所以此時可下 telnet localhost 9005 , 這樣就直接透過 SSH Server 的 IP 連到要連線的IP了, 這個可運用在某台要連線的設備只允許某些管理IP進去的情境

C. 新增 Linux 版本

ssh -N -f -L 9100:dest_server:21 taiwanwolf@middle_server

-N 參數的用途是"不建立shell"

-f 參數的用途是"連線後執行於背景"

-L 把本機的9100透過 midserver 導到 dest_server 的 21

如果要把ssh tunnel連線中斷, 可以下 ps aux | grep 9100 找出 PID, 再去 kill -9 PID 把 Process砍掉, 就可以了~

P.S 如果只有開 local 的80 port 可以出去, 那就要把外面的 ssh server 的 listen 改為 80 port
先把 ssh server 的 /etc/ssh/sshd_config 加上一行 Port 80, 然後 AllowUsers 如果沒有的話要加上欲登入者的ID, 然後在用戶端要多下 plink -P 80 再接續原先的解法

參考網站 : http://ppc52776.blogspot.com/2007/11/ssh-tunnel-firewall.html

沒有留言: