必须用绝对路径,不能含~、空格、中文或特殊符号;权限须为600;仅支持OpenSSH原生格式(非.ppk);服务器需启用PubkeyAuthentication。
私钥路径必须用绝对路径,不能带~或空格
macos版navicat读取私钥时根本不展开~,填~/keys/id_rsa会直接报“无法加载密钥”。路径里只要出现空格、中文或括号(比如/users/张三/.ssh/id_rsa或/users/me/my keys/id_rsa),openssh底层就会拒绝加载。
推荐做法是把私钥移到干净路径下,例如:/Users/you/.ssh/navicat-mysql.key 或 /Users/you/navicat-keys/prod-db。确认路径后,在Navicat的SSH选项卡里“私钥文件”栏粘贴这个完整路径——一个字符都不能错。
文件权限必须是600,否则OpenSSH静默失败
Navicat调用的是系统OpenSSH库,而OpenSSH对私钥权限极其严格:只要不是600,就直接拒绝读取,不提示具体原因,只显示“Key is invalid or corrupted”。
执行这条命令修正权限:
chmod 600 /path/to/your/private/key注意别误设成
700或644——后者常见于从邮件附件解压出来的密钥,容易被忽略。
- 用
ls -l /path/to/key检查输出是否含-rw------- - 如果用Finder双击打开过私钥,可能触发自动转码,建议用
file /path/to/key确认是OpenSSH格式(输出应含PEM RSA private key)
测试连接失败时,“Permission denied (publickey)”的真实含义
这个错误不是Navicat的问题,而是SSH协议层面的拒绝。它只说明一件事:服务器没接受你的公钥认证。可能原因有三个:
- 你填的SSH用户名和服务器上
~/.ssh/authorized_keys里对应公钥的归属用户不一致(比如填了admin但公钥只放在ubuntu用户目录下) - 服务器
/etc/ssh/sshd_config里PubkeyAuthentication被设为no(需设为yes并sudo systemctl restart sshd) - 私钥密码没输(如果私钥本身加密了),Navicat不会弹窗提示,只会卡在认证环节
验证方式:终端里跑ssh -i /path/to/key username@host,如果同样失败,问题一定在服务端或密钥配对环节。
Mac版Navicat不支持.ppk,只认OpenSSH原生格式
Windows用户常用PuTTYgen生成的.ppk文件,在macOS版Navicat里完全不可用。必须用OpenSSH工具链生成的私钥,例如:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/navicat-key生成的
navicat-key(私钥)和navicat-key.pub(公钥)。
如果你只有.ppk,得先在Windows或Linux上用PuTTYgen导出为OpenSSH格式,再传到Mac;直接改后缀名无效,格式结构完全不同。
ssh命令验证通路,再进Navicat。


















