macOS 取消 SSH 钥匙串自动登录

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 密码

  1. Command + Space 打开 Spotlight,搜索钥匙串访问(Keychain Access)
  2. 左侧选登录(Login)密码(Passwords)
  3. 搜索 SSHid_rsa
  4. 找到 SSH: /Users/<你的用户名>/.ssh/id_rsa
  5. 右键 → 删除

删除后再使用 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 noSSH 连接时不自动将密钥添加到 agent