我正在运行Mac OS X,看来在使用身份文件SSH到多台计算机后,我的“ ssh-agent”建立了大量的身份/密钥,然后有时向远程计算机提供过多的身份/密钥,导致它们在连接之前将我踢开:
收到与10.12.10.16的断开连接:2:cwd的身份验证失败太多
很明显发生了什么,此页面对此进行了更详细的讨论:
SSH服务器仅允许您尝试进行一定次数的身份验证。每次失败的密码尝试,提供的每一次失败的pubkey /身份等等,都会占用这些尝试之一。如果您的代理中有很多SSH密钥,则可能会发现SSH服务器可能会在允许您尝试进行密码身份验证之前将您踢出局。在这种情况下,有几种不同的解决方法。
重新启动会清除代理,然后一切正常。我还可以将以下行添加到我的.ssh/config
文件中,以强制其使用密码身份验证:
PreferredAuthentications keyboard-interactive,password
无论如何,我在引用的页面上看到了有关从代理中删除密钥的说明,但是我不确定这是否适用于Mac,因为无论如何重启后它们似乎都会被清除。
有没有一种简单的方法可以清除“ ssh-agent”中的所有密钥(重启时会发生相同的事情)?
ssh-add -l
我什么也不会得到。如果输入,ssh -i ~/keyFileLocation.dsa un@remotehost
我将得到一个OS X弹出对话框,要求输入密码。我输入它,然后它连接我。如果我断开连接然后键入,ssh-add -l
则会显示我刚刚使用的身份。重新启动计算机并键入后,ssh-add -l
它再次变为空白。ssh-add -D
在不重新启动的情况下清除键非常有用。谢谢!