Navicat协同模式仅同步连接配置中的SSH私钥本地路径而非密钥内容,因跨平台路径差异、权限校验不一致及便携版配置位置不可靠,导致SSH隧道静默失效或连接失败。
Navicat协同模式只同步路径,不同步私钥文件内容
navicat cloud 同步的只是 connections.ncx 里的 xml 配置,其中 ssh 私钥字段存的是本地绝对路径(如 c:\users\alice\.ssh\id_rsa 或 /users/bob/.ssh/id_ed25519),不是密钥本身。mac 和 windows 的路径结构、权限模型、默认用户目录完全不同,跨平台后该路径必然不存在。
更关键的是:Navicat 不会报错,而是静默跳过 SSH 隧道设置——你点“测试连接”成功,那只是本地直连;真正执行同步任务时,它用的是目标机器上那个根本不存在的路径,于是退化为无隧道直连,大概率失败。
Windows 和 macOS 对私钥文件权限要求不同
OpenSSH 在 Windows(尤其是较新版本)和 macOS 上对私钥文件的权限检查逻辑不一致。macOS 要求私钥文件权限必须是 600(即仅所有者可读写),而 Windows 默认创建的文件权限宽松得多。若直接把 macOS 上生成的私钥复制到 Windows,Navicat 可能因权限校验失败拒绝加载,但错误日志里往往只显示“SSH connection failed”,不提权限问题。
- 在 macOS 上:运行
chmod 600 ./ssh_keys/jumpbox_key - 在 Windows 上(PowerShell):需手动右键文件 → “属性” → “安全” → 编辑权限,确保只有当前用户有“读取”和“读取和执行”权限
便携版 Navicat 的配置写入位置不可靠
便携版 Navicat 把连接配置写入程序所在目录(如 D:\Navicat\connections.ncx),而非用户目录。当团队成员各自解压到不同路径(C:\Tools\Navicat vs E:\Apps\Navicat),Cloud 同步下来的路径引用依然指向原始机器上的位置,完全失效。
这不是 Bug,是设计使然:便携版默认不参与系统级配置管理。一旦混用便携版与安装版,协同配置就彻底脱钩。
真正麻烦的从来不是“怎么配一次”,而是“怎么确保十个人在三台系统上每次打开都走隧道”。路径必须显式、可验证、与机器解耦——否则所谓协同,不过是各自为政的幻觉。


















