SSH隧道通过本地端口转发将远程数据库端口加密映射至本地,无需修改数据库配置;需先配置密钥认证并测试SSH登录,再执行ssh -L命令建立隧道,客户端连接127.0.0.1及映射端口即可。

直接用 SSH 隧道连接远程数据库,核心是把数据库端口“悄悄搬”到本地,全程走加密通道,不暴露数据库本身。关键不是改数据库配置,而是靠 SSH 做中转。
确认远程服务器可 SSH 登录
先确保你能用 ssh user@host 正常登录目标服务器。推荐用密钥认证:
- 本地没密钥?运行
ssh-keygen -t ed25519生成 - 公钥传上去:
ssh-copy-id user@host - 登录测试成功,再往下走
建立本地端口转发隧道
在本地终端执行(以 MySQL 为例,远程监听 3306):
-
ssh -L 3307:127.0.0.1:3306 -N -f user@host-
-L 3307:127.0.0.1:3306表示:本地 3307 端口的数据,发给远程本机的 3306 -
-N不执行远程命令,只做端口转发 -
-f后台运行,不占终端
-
- 如果 SSH 服务不在默认 22 端口,加
-p 10022指定 - MongoDB 同理:把
3306换成27017,端口映射如27018:127.0.0.1:27017
本地客户端连哪个地址?
- 主机填
127.0.0.1(不是远程服务器 IP) - 端口填你映射的本地端口(比如
3307或27018) - 用户名密码填数据库自己的凭证,不是 SSH 的
- Navicat、DBeaver、
mysql -P 3307 -u root -p、mongosh "mongodb://127.0.0.1:27018"都能用
让隧道更稳一点
- 加
-o ServerAliveInterval=60防断连 - 长期使用建议写个简单监控脚本,检测端口是否还在监听,挂了自动重连
- 别用密码登录隧道,密钥更安全;也别让数据库 bind 到
0.0.0.0,保持127.0.0.1就够
不复杂但容易忽略


















