SSH 端口轉發教學:三種隧道一次學識

# 用 SSH 端口轉發穿透內網:三種隧道一次學識 喺日常 IT 運維入面,成日都要面對一個問題:公司有啲伺服器喺內網,冇對外開放,但你要喺屋企或者出街時連入去維護。直接開 RDP 或者 SSH 對外係高危做法,隨時俾人暴力破解。今次同大家講講 SSH 端口轉發(Port Forwarding)呢個神器,用一條 SSH 連接就搞掂晒。 ## SSH 端口轉發係咩嚟? SSH 端口轉發(SSH Tu...

# 用 SSH 端口轉發穿透內網:三種隧道一次學識

喺日常 IT 運維入面,成日都要面對一個問題:公司有啲伺服器喺內網,冇對外開放,但你要喺屋企或者出街時連入去維護。直接開 RDP 或者 SSH 對外係高危做法,隨時俾人暴力破解。今次同大家講講 SSH 端口轉發(Port Forwarding)呢個神器,用一條 SSH 連接就搞掂晒。

## SSH 端口轉發係咩嚟?

SSH 端口轉發(SSH Tunneling)係利用已經建立嘅 SSH 加密通道,將某個 TCP 端口嘅流量經呢條隧道轉去另一個位置。因為全程行緊 SSH 加密,所以即使你連緊嘅係公網中間人,都睇唔到你實際傳緊咩嘢。

SSH 端口轉發主要有三種模式,分別係本地轉發(Local Forwarding)、遠程轉發(Remote Forwarding)同動態轉發(Dynamic Forwarding)。三種各有用處,下面逐一拆解。

## 本地轉發(Local Forwarding):-L

本地轉發係最常用嘅一種,作用係將你本機嘅某個端口,經 SSH 隧道轉去遠端可到達嘅目標。

假設你有一部 jump server(跳板機),IP 係 `jump.example.com`,而內網有一部 MySQL 伺服器 `192.168.1.50:3306` 淨係俾 jump server 訪問。你想喺自己電腦用 Navicat 連個 MySQL,就可以咁做:

ssh -L 3307:192.168.1.50:3306 user@jump.example.com

呢句指令嘅意思係:喺本機開一個 3307 端口,任何連去 `localhost:3307` 嘅流量,都會經 jump server 轉去 `192.168.1.50:3306`。

之後你喺 Navicat 直接連 `localhost:3307` 就得,完全唔需要喺 MySQL 度開對外端口。呢個方法對於保護內網數據庫、內部網站(例如 Jenkins、Grafana)非常有用。

如果你想長期掛住,可以加 `-N -f`:

ssh -N -f -L 3307:192.168.1.50:3306 user@jump.example.com

`-N` 表示唔執行遠端指令,`-f` 表示喺背景運行。

## 遠程轉發(Remote Forwarding):-R

遠程轉發啱用喺相反場景:你想俾遠端機器訪問你本機嘅服務。例如你喺屋企部電腦跑緊一個開發服務器,想俾公司同事測試,但你屋企冇固定公網 IP。

ssh -R 8080:localhost:3000 user@jump.example.com

呢句嘅意思係:喺 jump server 上開一個 8080 端口,任何連去 jump server `8080` 嘅流量,都會經隧道轉返去你本機嘅 3000 端口。

同事只要訪問 `jump.example.com:8080` 就可以用到你本機跑緊嘅服務。呢個係唔使開 port forward 路由、唔使搞 DDNS 就可以實現臨時對外訪問嘅好方法。

⚠️ 要留意,默認情況下遠程轉發只綁定 jump server 嘅 localhost,外面訪問唔到。要開放對外,需要喺 jump server 嘅 `/etc/ssh/sshd_config` 加:

GatewayPorts yes

之後重啟 SSH 服務先至有效。

## 動態轉發(Dynamic Forwarding):-D

動態轉發其實就係一個 SOCKS 代理,你可以將 SSH 隧道當成代理伺服器用。

ssh -D 1080 user@jump.example.com

之後喺瀏覽器或者系統網絡設定入面,將 SOCKS5 代理指向 `localhost:1080`,咁你所有上網流量都會經 jump server 出去。呢個做法經常用嚟安全瀏覽、或者訪問只限內網先睇到嘅網站。

## 實戰總結

| 模式 | 參數 | 方向 | 典型用途 |
|——|——|——|———-|
| 本地轉發 | `-L` | 本機 → 遠端目標 | 連內網數據庫/網站 |
| 遠程轉發 | `-R` | 遠端 → 本機 | 臨時對外提供服務 |
| 動態轉發 | `-D` | SOCKS 代理 | 安全上網/訪問內網 |

🔗 參考資料:NVD NIST 漏洞資料庫

記住一個口訣:「`-L` 本地出,`-R` 遠程入,`-D` 通通過」。搞掂晒呢三種 SSH 端口轉發,內網穿透就唔使再頭痕。

#server #IT教學 #技術分享 #SSH

SSH 端口轉發教學:三種隧道一次學識 - 文章重點速覽 infographic