2013年4月11日 星期四

ssh 建立 SOCKS proxy 讓 Firefox 走 ssh tunnel 或 reverse tunnel

在受限制的網路環境下可以透過建立 SOCKS server 讓 Firefox 穿牆。

$ ssh -D [local_port] -Nf [remote_host]

[local_port] 填入要在 localhost 監聽的 port,[remote_host] 填入 ssh 連線的位址。"-N" 是指不要 login shell,"-f" 放背景執行,也許還可以加個 "-C" 進行壓縮。

之後 Firefox 開啟 proxy 設定,選用 SOCKS v5。主機填 localhost,port 照上面填就可以了。

若要反過來建立一個可以從自由公開網路連進私有網路的 SOCKS server,只要先建立一條 reverse tunnel  即可。

在網路受限的主機上建立 reverse tunnel:

$ ssh -NfR [remote_port]:localhost:22 [remote_host]

在自由網路上的主機需要在 /etc/ssh/sshd_config 裡加上 GatewayPorts=yes,不然會綁到 localhost 去而不是開放網路。

在自由網路上的主機建立 SOCKS server:

$ ssh -D [local_port] -Nf localhost -p [remote_port]

另外為了預防自動斷線,可以在 ~/.ssh/config 中加入 serveraliveinterval 60。