SSH本地端口转发可将内网数据库安全映射至本地:执行ssh -L 3307:192.168.5.10:3306 user@203.0.113.5,本地访问127.0.0.1:3307即等效直连内网MySQL,全程加密且无需开放公网端口。

直接用 SSH 本地端口转发,就能把内网数据库安全地“拉”到本地,全程加密、无需开放公网端口。
明确访问路径和角色分工
典型场景是:你本地电脑无法直连内网数据库(比如 MySQL 在 192.168.5.10:3306),但有一台能同时访问内外网的跳板机(比如公网 IP 是 203.0.113.5)。SSH 隧道就架在这三者之间:
- 你的本地机器 → 通过 SSH 连上跳板机(走 22 端口)
- 跳板机 → 再去访问内网数据库(走 3306 端口)
- 所有流量都封装在 SSH 加密通道里,中间网络看不到明文数据
执行本地端口转发命令
在本地终端运行这一条命令即可:
ssh -L 3307:192.168.5.10:3306 user@203.0.113.5
- -L 3307:本地监听 3307 端口(可自选,避开已占用端口)
- 192.168.5.10:3306:跳板机能访问的内网数据库地址和端口
- user@203.0.113.5:跳板机的登录凭证
成功建立后,保持终端不关闭。此时你在本地连接 127.0.0.1:3307,就等同于直连内网数据库。
客户端工具配置示例
用本地 MySQL 客户端、DBeaver 或 VSCode 的 Database 扩展时,填入:
- Host:127.0.0.1(不是数据库真实 IP)
- Port:3307(与 -L 后面的本地端口一致)
- User / Password:数据库本身的账号密码
不需要改数据库配置,也不需要在防火墙上开 3306 入站规则——所有穿透靠 SSH 完成。
增强可用性与安全性
实际使用中建议加几个实用选项:
-
-fN:后台运行,不占终端(如
ssh -fN -L 3307:192.168.5.10:3306 user@203.0.113.5) - -o ServerAliveInterval=60:每分钟发心跳,防意外断连
- 跳板机 SSH 服务需确认开启端口转发:
AllowTcpForwarding yes(在/etc/ssh/sshd_config中) - 推荐用密钥登录代替密码,更安全也免交互

















