临时想给远方客户演示本地 localhost:8080 正在开发的项目,或需要穿透堡垒机连接内网深处的 MySQL 数据库时,专门去搭建 FRP 或 Cloudflare Tunnel 往往杀鸡用牛刀。
SSH (Secure Shell) 内置了强大的**端口转发(Port Forwarding)**与加密隧道机制,一行轻量命令即可化身全能内网穿透神器!
[!NOTE] 📌 核心速览(TL;DR / 快问快答):
- 本地转发 (
-L):将远端内网/数据库端口安全“拉回”本地访问 (ssh -L 本地端口:目标内网IP:目标端口 跳板机)。- 远程反向转发 (
-R):将本地开发端口“推向”公网 VPS 供外部访问 (ssh -R VPS端口:127.0.0.1:本地端口 VPS)。- 动态转发 (
-D):在本地建立加密 Socks5 代理通道 (ssh -D 1080 VPS)。- 后台静默长连接:配合
-Nf参数实现后台静默运行,配合autossh实现断线自动重连。
📊 SSH 三大端口转发模式全景图解
| 模式类型 | 参数标志 | 流量流向与场景 | 典型实战命令 |
|---|---|---|---|
| 本地端口转发 | -L | 远端拉回本地:通过跳板机访问内网受限数据库 (MySQL/Redis) | ssh -Nf -L 3306:10.0.0.5:3306 root@vps_ip |
| 远程反向转发 | -R | 本地暴露公网:将本地 Web 开发端口临时给外网访客展示 | ssh -Nf -R 8080:127.0.0.1:8080 root@vps_ip |
| 动态代理转发 | -D | 全局 Socks5 通道:本地开辟 1080 端口走海外 VPS 加密出境 | ssh -Nf -D 1080 root@vps_ip |
🛠️ 生产级三大实战场景详解
1. 本地端口转发 (-L):安全直连内网隔离数据库
假设内网数据库 10.0.0.5:3306 禁止外网直连,只允许跳板机访问。在本地终端执行:
ssh -Nf -L 13306:10.0.0.5:3306 root@跳板机公网IP
效果:本地打开 Navicat / DBeaver 连接
127.0.0.1:13306,所有流量通过 SSH 加密隧道直达远端数据库。
2. 远程反向转发 (-R):零公网 IP 临时暴露本地 Web
将本地正在开发的 localhost:8080 网站直接通过公网 VPS 的 8080 端口暴露给他人访问:
ssh -Nf -R 8080:127.0.0.1:8080 root@你的公网VPS
⚠️ 核心避坑:VPS 上的
/etc/ssh/sshd_config必须配置GatewayPorts yes并重启 SSH,否则远程端口仅监听在 VPS 的127.0.0.1,外网无法访问。
3. 动态端口转发 (-D):即开即用的加密 Socks5 代理
ssh -Nf -D 1080 root@你的海外VPS
效果:本地浏览器或终端设置 Socks5 代理
127.0.0.1:1080,所有流量即刻走该 VPS 安全出海。
❓ 常见问题与 AI 快问快答 (FAQ)
Q1: 常用参数 -N 和 -f 分别代表什么意思?
答:-N 表示不执行远程远程命令(纯建立端口转发隧道);-f 表示输入密码或完成密钥认证后立即转入后台静默运行。
Q2: 远程反向转发经常因为网络抖动断开怎么办?
答:推荐安装 autossh(autossh -M 0 -Nf -R 8080:127.0.0.1:8080 root@vps_ip),它内置了心跳探针,在网络闪断后能自动毫秒级重连。
(相关资源导航:如果您需要购买具备独立公网 IP 的跳板 VPS,欢迎阅读 《2026 国外 VPS 选购指南》 获取 DMIT、搬瓦工与 CloudCone 优惠;商用专线推荐见 《“饿饭CC云”深度评测》!)