7 月 292020
Source: 利用 SSH Tunnel 做跳板(aka. 翻牆)
SSH
參數說明:
-N
: 不執行任何指令-f
: 在背景執行-L
: 將 local port 轉向-R
: 將 remote port 轉向-D
: socks proxy
建立 SSH tunnel(正向)
# syntax: ssh -L local_port:remote_address:remote_port username@server.com # 經過 ssh://localhost:2323 的連線,會藉由 serverB 作為跳板,再連到 ptt.cc:22 [user@serverA]$ ssh -NfL 2323:ptt.cc:22 user@serverB # 連線 [user@serverA]$ ssh bbsu@localhost -p 2323
建立 SSH tunnel(反向)
注意,開啟反向 tunnel 之後,等於區網開了一個洞,外面的人可以連進來,可能會造成安全風險,請謹慎使用。若配合rdesktop
之類的程式使用,甚至可以在桌面環境遠端遙控。
# syntax: ssh -R remote_port:local_address:local_port username@server.com # 經過 serverB:8888 的連線,都會 tunnel 到 localhost:1234 [user@serverA]$ ssh -NfR 8888:localhost:1234 user@serverB # 連線 [user@serverB]$ ssh user@serverB -p 8888 # 遠端桌面 [user@serverB]$ rdesktop serverB:8888
建立 SOCKS proxy server
# syntax: ssh -D port user@host [user@serverA]$ ssh -NfD 2323 user@serverB # 讓 Chrome 透過 proxy 連線(須先關閉所有運行中的 Chrome) # Linux/Windows # 將以下設定加入啟動 Chrome 的「目標」(右鍵 ➡️ 內容)後面 --proxy-server="socks5://localhost:2323" # macOS # 在 terminal 內使用指令方式開啟 Chrome open -a "Google Chrome" --args --proxy-server="socks5://localhost:2323" # 啟動以後,瀏覽所有網頁都會透過這台 proxy server
列出使用中的 ssh tunnel
ps aux | grep ssh
參考資料
- 上班族 ssh tunnel 求生手冊
- ssh tunnel
- Reverse SSH Tunnel實際運用,搭配 auotssh 永不斷線,putty 建立反向 tunnel
- serverfault: Can I create SSH to tunnel HTTP through server like it was proxy?
- Configuring a SOCKS proxy server in Chrome
- Linux 透過 SSH SOCKS 連線來使用 Firefox / Pidgin(MSN, GTalk..)
- 使用 OpenShift 的 SSH 來架設跳板
- 调试利器-SSH隧道
- superuser: List open SSH tunnels