概念

什麼是 SSH 隧道?連接埠轉發詳解(2026)

SSH 隧道(連接埠轉發)講清楚:本地(-L)、遠端(-R)、動態(-D / SOCKS)轉發各自做什麼、安全注意點,以及從手機到達私有服務的更簡單替代。

CC Chen Chen· 創始人·2026 年 6 月 24 日·閱讀 5 分鐘

什麼是 SSH 隧道?

SSH 隧道(也叫 SSH 連接埠轉發)把另一個服務的流量穿過你的加密 SSH 連線發送。它讓你能到達一個本來不可直接存取的服務——綁在伺服器 localhost 上的資料庫、防火牆後的網頁介面、或在路上存取你的家庭網路——靠把它繞道走 SSH。有三種:本地(-L)、遠端(-R)、動態(-D,一個 SOCKS 代理)。下面講各自做什麼、何時用。

本地轉發(-L):在本地到達遠端服務

最常見的一種。你把一個本地連接埠轉發到伺服器能到達的服務。經典例子:只監聽伺服器 localhost 的資料庫。

ssh -L 8080:localhost:5432 user@server
# 現在你機器上的 localhost:8080 → 伺服器上 :5432 的 Postgres

用它把本地資料庫 GUI 連到一個沒暴露到公網的遠端資料庫,或在你自己瀏覽器裡打開遠端管理面板。

遠端轉發(-R):暴露一個本地服務

反過來:你讓伺服器上的一個連接埠轉發到機器上的服務。適合讓遠端盒子(或隊友)到達你本地跑的東西,比如開發伺服器。

ssh -R 9000:localhost:3000 user@server
# 伺服器的 :9000 → 你本地 :3000 的應用

動態轉發(-D):一個 SOCKS 代理

這把 SSH 連線變成一個 SOCKS 代理,於是你能把瀏覽器流量繞道走伺服器——適合到達伺服器網路上的任何東西,或像在它上面一樣上網。

ssh -D 1080 user@server
# 把瀏覽器的 SOCKS 代理指向 localhost:1080

手機上的 SSH 隧道——以及一個更簡單的替代

連接埠轉發主要是桌面工作流;行動 SSH 用戶端聚焦終端機,在手機上敲隧道參數很彆扭。對最常見的目標——從手機到達一個私有服務——通常有比手動隧道更乾淨的答案:把那個服務的主機放進 Tailscale 網路、直接用它的私有位址到達。TermAI 內建 Tailscale,所以你不必轉發連接埠,直接連那個私有盒子幹活就行。見 Tailscale vs WireGuard

從手機連私有伺服器的 SSH 工作階段
從手機到達私有服務,Tailscale 位址通常比手敲 SSH 隧道參數簡單——你直接連那個盒子。

關於安全的一點說明

隧道由 SSH 加密,這很好——但遠端轉發(-R)可能把本地服務暴露得比你想的更廣,而 GatewayPorts 會把一個轉發對整個網路打開。只轉發你需要的、除非有意否則綁到 localhost、並且優先用私有網路(Tailscale)而非讓轉發一直開著。

常見問題

SSH 連接埠轉發用來做什麼?
到達一個不可直接存取的服務——伺服器 localhost 上的資料庫、內部網頁介面、或你的家庭網路——靠把它隧道走 SSH。

-L 和 -R 有什麼區別?
-L(本地)把你機器上的連接埠轉發到伺服器能到達的服務。-R(遠端)把伺服器上的連接埠轉發到你機器上的服務。-D 做一個 SOCKS 代理。

能從手機做 SSH 隧道嗎?
有些用戶端支援,但在手機上很繁瑣。要到達私有服務,Tailscale(TermAI 內建)通常更簡單——直接連私有位址,而非轉發連接埠。

快速事實

  • SSH 隧道 = 把另一個服務的流量繞道走你的 SSH 連線
  • -L 本地:在本地連接埠到達遠端服務
  • -R 遠端:在伺服器上暴露一個本地服務
  • -D 動態:穿過伺服器的 SOCKS 代理
  • 手機上:Tailscale(直接到達私有位址)通常比手動隧道簡單
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog