Navicat不支持.ppk文件,必须用PuTTYgen转换为OpenSSH格式私钥(如id_rsa),且路径不能含中文或空格、权限需设为600,再通过“测试SSH隧道”验证连通性。
Navicat 不支持 .ppk 文件,必须转成 OpenSSH 格式
navicat(包括 macos 和 windows 版)只认 openssh 原生私钥格式(如 id_rsa),不解析 putty 的 .ppk 文件。直接在 ssh 隧道设置里选 xxx.ppk,会静默失败——既不报错,也不建立隧道,连接直接卡在“正在连接…”状态。
用 PuTTYgen 转换 .ppk → OpenSSH 私钥(含密码保护)
转换不能靠命令行一键完成,因为 .ppk 是 PuTTY 自有封装格式,OpenSSH 工具链(如 ssh-keygen)无法直接读取。必须用官方工具 PuTTYgen:
- 下载并打开 PuTTYgen(最新版 v0.79+)
- 点击【Load】→ 选择你的
xxx.ppk文件 - 若提示输入密钥密码,务必填对(PuTTYgen 不会帮你爆破)
- 菜单栏【Conversions】→ 【Export OpenSSH key (force new file format)】
- 保存为
id_rsa(不要加后缀,也不要选“private key for ssh.com”)
注意:导出的文件开头是 -----BEGIN OPENSSH PRIVATE KEY-----,不是旧版 PEM 格式(-----BEGIN RSA PRIVATE KEY-----)。Navicat v16+ 支持新格式,v15 及更早需选“Export OpenSSH key”(无 force)生成旧格式。
验证转换后的私钥能否被 Navicat 正确加载
转换完别急着填进 Navicat,先本地验证是否合法:
- 终端执行
ssh -T -i /path/to/id_rsa user@host,能打印 welcome 信息即有效 - 确保私钥文件权限是
600(macOS/Linux):chmod 600 /path/to/id_rsa - 路径不能含中文或空格,例如
/Users/张三/.ssh/id_rsa在部分 Navicat 版本里会跳过加载,改成/Users/zs/.ssh/id_rsa - 在 Navicat 连接配置的 SSH 页面,私钥路径选中该文件后,“测试 SSH 隧道”按钮应变为可点击状态;点它,弹窗显示 “SSH tunnel connected” 才算真正就位
常见失败原因和绕过方式
即使转换成功,仍连不上,大概率卡在这几个点:
-
.ppk原本用的是 RSA + SHA-256 签名,但 PuTTYgen 导出时默认用新算法(如 sk-ssh-ed25519@openssh.com),Navicat v15 不识别 → 改用 PuTTYgen v0.76 并勾选“RSA”类型再导出 - 服务器端
/etc/ssh/sshd_config关闭了PubkeyAuthentication yes或禁用了对应密钥类型 → 检查服务端日志tail -f /var/log/auth.log - Navicat 缓存了旧的 SSH 配置,重启软件无效 → 临时改个连接名再保存,强制刷新上下文
- 私钥密码输错三次后 PuTTYgen 会锁死当前 session,需关闭重开
最硬核的验证方式:把转换后的 id_rsa 拷到另一台没装 PuTTY 的机器,用系统自带 ssh 命令连一次。能通,说明密钥本身没问题;Navicat 还不通,就是软件侧路径、权限或版本兼容问题。











