我正在运行 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 手册页还有更多选择。