Navicat SSH隧道连接失败主因是主机填公网IP,正确应填127.0.0.1或localhost;私钥需OpenSSH格式且权限宽松;服务器须开启AllowTcpForwarding;Windows防火墙可能拦截本地端口映射。
Navicat里填错主机是连接失败最常见原因
很多人测试连接失败,第一反应是密码错了或端口不通,其实90%是因为常规选项卡里的主机填成了服务器公网ip。ssh隧道已经把你“送进”了远程服务器内部,这时mysql服务对你来说就是本地服务。
-
主机必须填127.0.0.1或localhost(除非你明确知道MySQL监听在其他网卡IP上) - 如果MySQL跑在Docker容器里,且容器端口映射到宿主机的
5506,那端口就填5506,不是容器内的3306 - 若用Hive,
主机仍填127.0.0.1,但端口要对应HiveServer2监听端口(默认10000)
Windows下私钥格式不兼容会导致密钥认证失败
Navicat for Windows原生只支持OpenSSH格式私钥(id_rsa),不直接识别PuTTY的.ppk文件。强行导入会提示“无效密钥”或“认证失败”,哪怕私钥本身没问题。
- 用
puttygen打开你的.ppk,点击Conversions → Export OpenSSH key另存为新文件 - 确保私钥文件权限宽松——Windows上Navicat有时读取受阻,可右键属性→安全→给当前用户“读取”权限
- 如果私钥有密码,
密钥密码字段必须填写,且不能含中文或特殊符号(如★、!)
AllowTcpForwarding no会让Navicat SSH隧道完全失效
你用ssh命令能连上服务器,但Navicat始终报“Connection refused”或“Authentication failed”,大概率是服务器禁用了TCP端口转发。这不是Navicat的问题,而是/etc/ssh/sshd_config里的一行配置被改过。
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
- 登录服务器执行:
sudo grep AllowTcpForwarding /etc/ssh/sshd_config,如果输出no,就必须改 - 编辑该文件,把
AllowTcpForwarding no改成yes,然后重启:sudo systemctl restart sshd - 某些云厂商(如Hostway、部分虚拟主机)默认关闭此选项,需联系技术支持开启
Windows防火墙可能拦截Navicat的本地端口映射
SSH隧道本质是在本地开一个临时端口(比如127.0.0.1:3307)转发到远端,而Windows Defender防火墙有时会静默阻止这个行为,导致Navicat卡在“正在连接…”状态。
- 临时验证:在Navicat测试连接前,先用命令行手动建个隧道:
ssh -L 3307:127.0.0.1:3306 user@host,再用Navicat连127.0.0.1:3307——如果成功,说明是防火墙问题 - 永久解决:在Windows防火墙高级设置里,新建出站规则,允许
Navicat.exe的所有网络连接 - 注意:不是所有版本Navicat都走同一进程名,Premium版通常是
navicat.exe,但安装路径含空格时需用引号包裹
实际配一次就知道,最难的从来不是填哪几个框,而是搞清“谁在哪个网络位置说话”。SSH用户名和MySQL用户名是两套独立账号,主机字段切换视角的时机,以及服务器上那一行AllowTcpForwarding是否开着——这三个点踩错任意一个,都会让整个隧道变成单向玻璃。










