我如何清除 ssh-agent 条目(在 Mac OS X 上)?

我如何清除 ssh-agent 条目(在 Mac OS X 上)?

我正在运行 Mac OS X,在使用身份文件通过 SSH 连接到几台机器后,我的‘ssh-代理’建立大量的身份 / 密钥,然后有时会向远程机器提供太多,导致他们在连接之前将我踢出:

收到来自 10.12.10.16 的断开连接:2:cwd 的身份验证失败次数过多

发生的事情很明显,这一页更详细地讨论它:

SSH 服务器只允许您尝试验证一定次数。每次密码尝试失败、每次提供的公钥/身份失败等都会占用一次尝试。如果您的代理中有很多 SSH 密钥,您可能会发现 SSH 服务器可能会在允许您尝试密码验证之前将您踢出。如果是这种情况,有几种不同的解决方法。

重新启动将清除代理,然后一切恢复正常。我还可以将以下行添加到我的.ssh/config文件中,以强制它使用密码验证:

PreferredAuthentications keyboard-interactive,password

无论如何,我看到了我引用的页面上关于从代理中删除密钥的说明,但我不确定这是否适用于 Mac,因为无论如何它们似乎在重启后被清除。

有没有简单的方法可以清除“ssh-agent”中的所有密钥(与重启时发生的情况相同)?

答案1

你的 SSH 密钥应该不是仅仅因为您通过 SSH 连接到服务器就会自动添加到代理......

运行ssh-add -l列出代理的密钥,ssh-add -D清除所有密钥。

答案2

限制检查哪些键的另一种方法是添加IdentitiesOnly yes/.ssh/config和条目列表中

IdentityFile ~/.ssh/<nameofkey>

您也可以将它们添加到每个主机条目:

Host server-name HostName <ipaddress> User <username> IdentityFile ~/.ssh/<nameofkey>

SSH 手册页还有更多选择。

相关内容