2010年10月8日 星期五

[Linux] 反向建立 SSH Tunnel、免 VPN 連回公司

瀏覽數
來源: http://feedproxy.google.com/~r/josephj/~3/AKxLDfq0xV8/entry.php
來源: http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?viewmode=compact&topic_id=17538&forum=7

從家中連到公司的需求


用過 SSH 連線到公司內網、設定 Tunnel 的 Port Forwawrding 後、在 Browser 設定 SOCKS Proxy 即可瀏覽內部網頁。所以就在思考、也跟同事討論,既然已從公司建立 SSH 連線到家中,理論上應可利用此連線,不需要考慮 VPN 與 NAT 的限制、從家中再連回到公司。昨天上網搜尋了 SSH Tunnel、文章很多、標題很聳動 (利用SSH Tunnel 逃離 MIS 掌控魔爪) ,但大多是講正向 Tunnel,直到看到了這一篇:上班族 SSH Tunnel 求生手冊,最後有講到反向 Tunnel,正是我要的東東啊!

Step 1 : 建立反向的 SSH Tunnel


建立反向 SSH Tunnel
所以,你可以上班時用 SSH 連到 dev.corp,再用下面的指令連回家中 home.idv:
ssh -NfR 8080:dev.corp:22 user@home.idv
大概解釋一下:

  • Nf 是指背景運作且不執行任何命令,所以此指令不會開一個新的 Terminal。

  • R 代表要建立一個反向(Reversed) 的 SSH Tunnel,也就是要讓對方可以連進來、而不是跟平常一樣只是自己連到對方。

  • 8080 為 home.idv 的 Port 8080,可隨意指定。

  • dev.corp 為 dev.corp 的 Port 22,必須是這台 SSH 所使用的 Port。

  • 8080:dev.corp:22 合起來看就是將傳送到 home.idv:8080 全部灌到 dev.corp:22(這種技術就叫 Port Forwarding)。


如此一來你就建立好了一個反向的 SSH Tunnel 了。此時再開一個 Shell 連回至 home.idv、執行下面的指令:
ssh -p 8080 localhost
-p 代表連到 Port 8080。因為之前在公司主機上已經建立好了 Tunnel,所以 localhost:8080 就會直接用此 Tunnel 連到 dev.corp:22 去。
居然可以透過網路上重重的限制(VPN、NAT)連回公司!感覺真是超棒的啦。

Step 2 : 建立 SOCKS Server


高興沒多久後就開始思考:雖然 SSH 連回公司的需求已經解決了,但是... 公司內還有很多服務啊!像是內部員工網站、內部的 Wiki 系統、內部的 SCM Repository 存取等... 光只有 SSH 根本沒太大的幫助該如何讓自己的家中的個人電腦也能存取這些資源呢?答案就是建立 SOCKS Server (謝謝小 Z 大大幫忙,原來只需多加一個參數即可建立)

小改一下建立與使用 SOCKS Server
ssh -p 8080 -D 3128 localhost
-D 3128 表示將本機的 Port 3128 設為 SOCKS Proxy Server。
如此一來,家中的伺服器就會變成 SOCKS Proxy Server,你的網際網路設定的 SOCKS 欄位填入 home.idv:3128 即可。



SSH Tunnel 必學



以下是整理上班族 SSH Tunnel 求生手冊

在外賺辛苦錢時,你是否有以下的困擾呢:

  • 擔心網管監控你的一舉一動?(104 事件)

  • 你公司網路防火牆擋掉 Facebook?沒辦法 QK 一下...

  • 除了 80 與 443 Port 外全部被擋掉?


這些情況都可以透過 SSH Tunnel 將自己的連線加密與突破。

在公司,用自己的主機連線


在公司,透過外面的電腦當 Proxy,連到外面。

Windows(下載 plink.ext)
plink -ssh -L 3128:home.com:3128 username@home.com
Linux / Unix
ssh -NfD 3128 username@home.com

  • -N : 不執行任何命令

  • -f : 在背景執行

  • -D : 建 Socks5 的 Proxy


瀏覽器和 MSN 的 Socks 5 Proxy 設定的欄位填上 localhost:3128。連出去的連線就是加密,並且是穿過 home.com 的連線。

 

在公司,用自己的主機連 BBS


假設 MIS 鎖住了 bbs.ptt.cc

Windows
plink -ssh -L 2323:bbs.ptt.cc:23 username@home.com
Linux / Unix
ssh -NfL 2323:bbs.ptt.cc:23 username@home.com
-L : 將local port 轉向,就可以連到批踢踢,而且加密。
telnet localhost 2323


 

沒有留言: