之前用 Navicat 连服务器数据库都是把 MySQL 的 3306 端口暴露在公网上,虽然设了密码但总觉得不安全。后来换成 SSH 隧道转发,数据库端口只对本机开放,外面连不进来。本地连的时候通过 SSH 隧道转过去,跟直连一样快。
服务器用的雨云,地址 rain.jiyueip.com,优惠码 admin01 五折。
SSH 隧道原理
服务器上 MySQL 只绑 127.0.0.1 不给外网连。你在本地用 ssh -L 3307:127.0.0.1:3306 user@服务器IP 建立隧道。本地连 127.0.0.1:3307 等于连到远程 MySQL 的 3306。中间所有流量加密传输,安全组不用开 3306 端口。
怎么配客户端
Navicat 或 DBeaver 连接设置里选 SSH 隧道。填服务器IP、SSH 端口、用户名、密钥或密码。然后 MySQL 连接填 127.0.0.1:3306。客户端自动建立隧道然后连数据库。每次打开客户端自动建立隧道,不影响平时使用。
隧道断了自动重连
网络抖一下 SSH 隧道就会断。用 autossh 替代 ssh:autossh -M 0 -N -L 3307:127.0.0.1:3306 user@服务器IP。断了自动重连,保持隧道一直通着。
其他用到隧道的场景
Redis 6379 同理只开本机不暴露公网,本地通过隧道连。内网的 Web 面板(宝塔、Grafana、Portainer)不暴露公网端口,本地用隧道转发到本地端口。SSH 隧道转发的方向反过来还能让别人访问你本地的服务。
搭好隧道之后安全组里关掉数据库和面板的公网端口。雨云 rain.jiyueip.com,优惠码 admin01 五折。






