navicat测试连接卡在“connecting to ssh host”说明ssh隧道未建立,需先验证基础连通性:用ssh -v命令排查超时、认证失败或服务端配置问题;若提示mysql连接失败则隧道已通,需检查ssh服务器到数据库的连通性及用户授权;断连问题需配置clientalive参数保活;私钥须为pem格式、600权限、绝对路径且无中文空格。

Navicat测试连接卡在“Connecting to SSH host”阶段
这说明SSH隧道根本没建起来,问题出在Navicat到SSH服务器这一段。别急着改数据库账号或端口,先验证基础连通性。
用终端手动模拟Navicat的SSH行为:ssh -v -p <code>22 username@ssh-host-ip(把22、username、ssh-host-ip换成你填在Navicat【SSH】页的实际值)。观察输出:
- 若几秒内报
Connection timed out→ 检查本地能否ping通ssh-host-ip,云平台安全组是否放行TCP22,Linux服务器上ss -tuln | grep ':22'是否有监听 - 若卡在
debug1: Authentications that can continue:后无响应 → 很可能是私钥没加载成功,或服务端AllowTcpForwarding no被禁用(查/etc/ssh/sshd_config) - 若提示
Permission denied (publickey)但你填的是密码 → Navicat【SSH】页的【认证方法】可能误设为公钥,应改为密码
Navicat提示“Can't connect to MySQL server on '127.0.0.1'”
这说明SSH隧道已建立成功,但隧道另一头——从SSH服务器去连数据库这一步失败了。错误里的127.0.0.1是Navicat【常规】页填的主机地址,它代表“SSH服务器视角下的数据库地址”,不是你本地的127.0.0.1。
登录SSH服务器,手动执行等效命令验证:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 如果【常规】页填的是
127.0.0.1:mysql -h 127.0.0.1 -P 3306 -u dbuser -p(确认MySQL服务确实在该机器上监听127.0.0.1:3306,且bind-address没被锁死) - 如果【常规】页填的是内网IP(如
192.168.10.5):telnet 192.168.10.5 3306(检查网络是否通、目标端口是否开放、防火墙是否拦截) - 注意:MySQL用户必须授权
'dbuser'@'localhost'(对应127.0.0.1)或'dbuser'@'192.168.10.5'(对应内网IP),不能只给'dbuser'@'%'就以为万事大吉
Navicat连接成功但几分钟后断开,报“Write failed: Broken pipe”
这是典型的空闲超时,中间设备(家用路由器、企业NAT、云厂商SLB)静默回收了长连接。Navicat自身不控制这个超时,得靠SSH协议层保活。
必须同时配置服务端和客户端:
- 服务端(
/etc/ssh/sshd_config)加两行:ClientAliveInterval 60和ClientAliveCountMax 3,然后sudo systemctl restart sshd - 客户端(Navicat Linux版)没有全局
~/.ssh/config入口,只能靠连接属性里找【高级】或【SSH】页的“保持活动”类选项;若找不到,换用命令行SSH做隧道(ssh -L 3307:127.0.0.1:3306 -N -f user@ssh-host),再让Navicat直连127.0.0.1:3307 - 别依赖
TCPKeepAlive yes,它在多数NAT环境下无效,ClientAlive*系列才是关键
私钥认证失败,但其他SSH客户端能连
Navicat对私钥格式和权限更敏感。Linux下常见坑点:
- 私钥文件权限不能太宽松:
chmod 600 /path/to/private_key,否则OpenSSH库会拒绝加载 - 私钥必须是PEM格式(以
-----BEGIN RSA PRIVATE KEY-----开头),不能是OpenSSH新格式(-----BEGIN OPENSSH PRIVATE KEY-----);用ssh-keygen -p -m PEM -f key可转换 - Navicat【SSH】页的【私钥】路径要填绝对路径,且不能含中文或空格;建议放在
~/keys/下,避免符号链接或挂载路径失效 - 如果私钥带密码短语,Navicat不会缓存,每次连接都弹窗;若想免输,需提前用
ssh-add加载到SSH agent,并确认Navicat启用了Agent支持(部分Linux发行版默认关闭)
最易被忽略的是:Navicat Linux版不读取系统级/etc/ssh/ssh_config,也不自动继承ssh-agent环境变量,所有保活、代理、跳转逻辑都得在界面里显式配全,少一个参数就可能断在某个环节。










