凭据保存失败主因是钥匙串权限、缓存冲突或信任链中断;需确认login钥匙串可写、应用获授权、清除旧凭据,并重启securityd等系统服务。
凭据保存失败在 macos 上通常不是密码输错,而是钥匙串权限、缓存冲突或信任链中断导致的。核心排查方向是:确认目标钥匙串可写、应用有访问授权、旧凭据不干扰、系统服务未卡死。
检查钥匙串是否被正确选中并可写
macOS 有多个钥匙串(login、System、iCloud),不同场景默认写入位置不同:
- 普通 App(如浏览器、Git、Navicat)默认使用 login 钥匙串,需确保它已解锁且未被设为“只读”
- 系统级证书或网络服务可能要求存入 System 钥匙串,但该钥匙串需要管理员密码才能写入
- iCloud 钥匙串若关闭或同步异常,会导致新凭据无法跨设备生效
验证方法:打开「钥匙串访问」→ 左侧边栏查看 login 和 System 是否存在;右键点击 login 钥匙串 → 「更改设置」→ 确保未勾选“锁定此钥匙串”;双击任意已有条目,确认能正常编辑。
修复应用的钥匙串访问权限
很多报错(如 Navicat 的 -34018、Git 推送失败、某些开发工具无法存密码)本质是钥匙串拒绝授权:
- 在「钥匙串访问」中搜索对应应用名(如 navicat、git-credential-osxkeychain)
- 找到相关密码条目 → 右键「显示简介」→ 切换到「访问控制」标签页
- 选择「允许所有应用程序访问此项目」,或点击「+」添加具体应用路径(如 /Applications/Navicat Premium.app)
- 关闭窗口并重启该应用
清理冲突的旧凭据和缓存
残留的过期或损坏条目会抢占新登录流程:
- 搜索关键词:appleid、com.apple.idmsa、github、git、ssh、your-domain.com
- 逐一删除疑似重复、失效或时间戳异常的条目(尤其是状态为「已过期」或「未知」的)
- 终端执行 killall cfprefsd 强制刷新配置缓存
- 重启 Mac 后再尝试保存凭据,系统会重建干净的信任链
验证系统服务是否正常运行
底层认证服务(如 securityd、keychaind)卡住时,图形界面操作会无响应或静默失败:
- 打开终端,运行 security list-keychains 查看钥匙串列表是否完整
- 执行 sudo pkill -f "securityd|keychaind" 重启关键进程
- 若涉及 iCloud 钥匙串,前往「系统设置 > Apple ID > 密码」确认开关已开启,并检查「系统状态」页面有无服务中断











