navicat 16仅支持未加密的openssh私钥(开头为-----begin openssh private key-----)或putty格式(.ppk)私钥,不支持带密码的私钥及ssh-agent自动加载,配置时需确保ssh隧道设置正确、私钥路径无中文/空格、mysql主机填localhost,且服务器端pubkeyauthentication开启、authorized_keys权限为600。
密钥对方式比密码更安全,也更适合长期维护或多人协作环境。navicat 16 支持 openssh 格式私钥(id_rsa)和 putty 格式(.ppk),但默认不接受带密码的私钥——这点容易卡住,后面会强调。
确认私钥格式与权限是否合规
Navicat 16 对私钥文件有硬性要求:必须是未加密的 OpenSSH 私钥(即创建时没设 passphrase),或者已用 PuTTYgen 转换为 .ppk 格式且未勾选“加密密钥”选项。
- 检查私钥是否含 passphrase:
ssh-keygen -y -f ~/.ssh/id_rsa,若提示输入密码,说明它被加密了,Navicat 无法直接使用 - OpenSSH 私钥开头应为
-----BEGIN OPENSSH PRIVATE KEY-----;如果是-----BEGIN RSA PRIVATE KEY-----,需用ssh-keygen -p -m PEM -f id_rsa转成新格式(部分旧版 Navicat 不兼容新格式) - Windows 用户若用 PuTTYgen 生成,务必在“Conversions → Export OpenSSH key”或“Export .ppk”,别误选“Export OpenSSH key”导出的是公钥
Navicat 16 中配置 SSH 密钥连接的关键步骤
界面操作本身简单,但几个字段填错会导致“Connection refused”或“Authentication failed”,不是服务器问题,而是客户端配置偏差。
- 在连接窗口的
SSH选项卡中,勾选“使用SSH隧道”,认证方式选“公钥” -
SSH 主机填跳板机或目标服务器公网 IP,端口默认22,但若服务器改过 SSH 端口(如2222),这里必须同步修改 -
用户名是服务器系统账户名(如ubuntu、ec2-user),不是 MySQL 用户名;这个账户必须已在~/.ssh/authorized_keys中写入你的公钥 - 点击“…”选择私钥文件后,Navicat 不会校验内容——它只看文件能否读取。若后续连不上,优先怀疑私钥格式或路径含中文/空格
常见报错与对应排查点
错误信息往往模糊,但实际原因集中在这几类:
- 报
Authentication failed:90% 是私钥未正确加载,或服务器端sshd_config中PubkeyAuthentication yes被关闭,或authorized_keys权限不对(应为600) - 报
Connection refused:先确认本地能ssh -i key user@host成功;若失败,Navicat 也必然失败;再查服务器防火墙是否放行了 SSH 端口 - 连上 SSH 隧道但连不上 MySQL:检查 Navicat “常规”选项卡中的
主机是否仍填了远程 IP——必须改成localhost或127.0.0.1,因为流量是经隧道转发到本机端口再进 MySQL 的
最易忽略的一点:Navicat 16 不支持通过 agent(如 Pageant 或 ssh-agent)自动提供密钥,所有私钥必须显式指定路径。如果你习惯用 agent 管理密钥,得单独导出一份无密私钥给 Navicat 用,别指望它自动接管。











