SSH
參數說明:
-N
: 不執行任何指令-f
: 在背景執行-L
: 將 local port 轉向-R
: 將 remote port 轉向-D
: socks proxy
建立 SSH tunnel(正向)
# syntax: ssh -L local_port:remote_address:remote_port [email protected]
# 經過 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 [email protected]
# 經過 serverB:8888 的連線,都會 tunnel 到 serverA:1234
[user@serverA]$ ssh -NfR 8888:localhost:1234 user@serverB
# 連線
[user@serverB]$ ssh user@localhost -p 8888
# 遠端桌面
[user@serverB]$ rdesktop localhost: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