ssh-add --apple-use-keychain ~/.ssh/id_rsa 做了两件事:把私钥加载到 ssh-agent,同时把 passphrase 保存到 macOS 钥匙串(Keychain)。取消时两者需要分别处理。
从 ssh-agent 移除密钥
查看当前已加载的密钥:
ssh-add -l
移除指定密钥:
ssh-add -d ~/.ssh/id_rsa
或移除全部:
ssh-add -D
这只影响当前 ssh-agent 会话,不会删除 Keychain 中保存的密码。
从钥匙串访问中删除 SSH 密码
Command + Space打开 Spotlight,搜索钥匙串访问(Keychain Access)- 左侧选登录(Login) → 密码(Passwords)
- 搜索
SSH或id_rsa - 找到
SSH: /Users/<你的用户名>/.ssh/id_rsa - 右键 → 删除
删除后再使用 SSH 时会重新要求输入 passphrase。
修改 ~/.ssh/config 禁用 UseKeychain
查看当前配置:
cat ~/.ssh/config
如果有以下内容,改为 no 或删除这两行:
Host *
UseKeychain yes
AddKeysToAgent yes
改为:
Host *
UseKeychain no
AddKeysToAgent no
完全恢复到手动输入密码
# 1. 移除 ssh-agent 中所有密钥
ssh-add -D
# 2. Keychain Access 里删除 SSH 条目(GUI 操作)
# 3. 修改 ~/.ssh/config,删除或禁用 UseKeychain / AddKeysToAgent
完成后每次 SSH 连接都会提示输入 passphrase,不再自动使用钥匙串。
各操作作用范围
| 操作 | 影响范围 |
|---|---|
ssh-add -d | 仅移除当前 ssh-agent 会话中的密钥 |
| Keychain Access 删除 | 删除保存的 passphrase,下次需重新输入 |
UseKeychain no | 阻止新的 SSH 会话向 Keychain 写入 |
AddKeysToAgent no | SSH 连接时不自动将密钥添加到 agent |
