mac用户需将ssh私钥安全纳入钥匙串管理,执行chmod 600修复权限、ssh-agent启动后用ssh-add --apple-use-keychain加载并勾选“始终允许”,再通过ssh-add -l验证;monterey以下系统改用ssh-add -k,并可选配置~/.ssh/config或~/.zshrc实现自动加载。

Mac用户生成SSH私钥后,必须将其安全纳入钥匙串管理,否则每次Git或SSH操作都会反复提示输入密码短语,且私钥无法被系统自动解锁。
确认私钥已存在并检查权限
打开终端,执行:ls -l ~/.ssh/id_*。若看到类似 -rw------- 1 user staff 419 9月28日 14:05 id_ed25519 的输出,说明私钥存在且权限合规;若权限不是 600(即 -rw-------),需立即修复:chmod 600 ~/.ssh/id_ed25519。权限过宽会导致 macOS 拒绝将该密钥加入钥匙串。
启动 ssh-agent 并加载私钥到钥匙串
执行:eval "$(ssh-agent -s)",确保后台密钥代理正在运行。
运行:ssh-add --apple-use-keychain ~/.ssh/id_ed25519。此时会弹出图形密码框,要求你输入该私钥的密码短语——【输入后勾选“始终允许”】,否则 VSCode 远程开发、iTerm2 等工具仍会反复索要授权。
这一步本质是把解密后的私钥句柄交由钥匙串统一托管,后续所有 SSH/Git 操作都通过钥匙串静默释放密钥,不再触发声明式弹窗。
验证是否成功持久化
关闭当前终端,新开一个终端窗口。
执行:ssh-add -l。如果输出中包含你的私钥指纹(如 256 SHA256:xxx... id_ed25519 (ED25519)),说明已成功加载;若提示 The agent has no identities,则未持久化成功。
此时需检查 macOS 版本:Monterey(12.0)及以上才支持 --apple-use-keychain 参数;若为 Catalina 或更早系统,请改用 ssh-add -K ~/.ssh/id_ed25519,并确保钥匙串中已存在对应登录项。
可选:配置 SSH 自动加载(避免每次手动 ssh-add)
方法一:编辑配置文件
运行:nano ~/.ssh/config,在空白处添加:
Host *<br>AddKeysToAgent yes<br>UseKeychain yes<br>IdentityFile ~/.ssh/id_ed25519
保存后退出(Ctrl+O → 回车 → Ctrl+X)。该配置让 OpenSSH 在首次使用密钥时自动调用钥匙串解锁并缓存。
方法二:设置 shell 启动自动加载
将 eval "$(ssh-agent -s)" 和 ssh-add --apple-use-keychain ~/.ssh/id_ed25519 2>/dev/null 追加到 ~/.zshrc 末尾,然后执行 source ~/.zshrc 生效。











