2010/10/21

[linux] 利用 autossh 和 proxychain 打造家庭辦公室

利用 ssh 製造 tunnel 讓我們可以"逃離公司 MIS 的魔掌" 的方法,我想大家早就會了。這點功夫,在軟體界這個小圈圈其實很容易散布開來的技術,我想還沒有人不會。

不過說到底, ssh tunnel 並不是一個很好的解決方式。因為 ssh tunnel 還是會遇到 connection timeout ﹑需要重連等等情況。遇到這些情況的時候,如果沒有去妥善的處理,又會造成麻煩(註1)。 另外,這個 ssh server 只會是我們的一個跳板,所以如果沒有 proxy 的功能,又會讓你在使用上造成麻煩(註2)。

解決之道在這邊:
1. AutoSSH 像下面這樣一行指令就可以確保這個 ssh tunnel 的連結一直維持運作。我的習慣是用 screen 在 foreground 跑,這樣我可以確切的知道它運作的情況。
 autossh -M 2345 -N -D 2222 remote 

2. ProxyChains 以下的設定檔可以讓我們接上原本只有 remote 可以接上的節點。真正要使用的指令,請參考下面 proxychains 指令的說明。
cat .proxychains/proxychains.conf
DynamicChain
tcp_read_time_out 15000
tcp_connect_time_out 10000
[ProxyList]
socks5 127.0.0.1 2222



2.1 ProxyChains 的指令其實很簡單。像上面提到的例子,我們想訪問公司內部的 web server 該怎麼做?在命令列上面打上:
proxychains firefox

這樣,開出來的 firefox 就會配置在 proxychains 的網路架構上。 (注意喔, firefox 如果已經開啟了,那新增加的行程,會回去原來的 firefox 裡面開一個 tab 而已,這樣就不會用到 proxychains 的配置)
想 ping 公司內部的 A 機器?
proxychains ping A

這樣,應該就有人看出來,其實用法就是在最前面加上 proxychains 而已。
(命令很長厚? 請愛用 alias ,像我都會用  alias psvn='proxychains svn'
alias px='proxychains'

這樣, svn 的訪問就很簡單, porxychains 的使用也縮短成只有 px 兩個字而已。

--
註1: 有人回說,那不是寫一個 shell , loop 去解決就好了嗎? ~ 呃,你一定沒遇過 ssh 被突然斷線的情況,突然斷線之後,原本的 connection 還沒那麼快斷勒,所以,你這時連上去,就會增一個 connection 的數量,最後網路情況如果很糟,你就會在你的 ssh server 上面看到一堆屍體跟沒有用的行程。
註2: 譬如說,我需要連結公司內部的 web service ,那光 ssh proxy socket server 以外,還需要 forward http 或 https 的部份,這樣設定起來就會... 不只是麻煩。

沒有留言:

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...