Linux下實現自動設置SSH代理
SSH的巨大價值體現在能夠配置爲代理服務器上。不像在Windows下每次還需要手動登錄設置,Linux有很好的工具鏈能夠實現自動設置SSH代理,就是expect和ssh的聯合使用,再加上proxychains,任何程序都可以享用代理了,在此我簡單介紹一下。
首先要安裝expect和openssh,如果沒有,Ubuntu下輸入apt-get install expect openssh-client即可安裝。接下來需要寫一段腳本:
#!/usr/bin/expect
set timeout 60
spawn /usr/bin/ssh -D 本地端口 -g 用戶名@服務器
expect {
"password:" {
send "密碼\r"
}
}
interact {
timeout 60 { send " "}
}
把上面的中文替換成對應內容,保存爲一個腳本文件,例如sshproxy.sh,然後給它執行權限,chmod +x sshproxy.sh。在終端下運行./sshproxy.sh,就會發現自動登錄到了服務器上,而且在本地建立了一個socks5代理。而且使用這段腳本還不用擔心會被踢,因爲每60秒都要發送一個空格表示還在活動。如果把sshproxy.sh放到自動啓動,那麼以後每次啓動都可以自動建立代理了。
這種方法建立的代理是socks5代理,在瀏覽器中很容易配置使用,但如果其他程序也想用它,而沒有代理功能,該怎麼辦呢?在Windows下面的確不好辦(需要各種付費的、不穩定的代理轉換工具),而在Linux下一切很簡單,只需要一個名叫proxychains的工具。Ubuntu安裝方法爲apt-get install proxychains。安裝完以後要設置/etc/proxychains.conf文件,刪除[ProxyList]後面的內容,然後添加
socks5 127.0.0.1 端口
把“端口”替換爲SSH代理設置的端口。然後在想要運行的程序前加上proxychains ,即可使用代理。例如輸入proxychains wget http://www.youtube.com -r,即可給wget設置SSH代理去下載。
正如其名,實際上proxychains是個代理鏈,我們可以設置多個代理,實現多級跳板連接。用在SSH代理上實在是大才小用了。