SSH 连接主机时出现 Too many authentication failures 错误的一种特殊原因

该文章根据 CC-BY-4.0 协议发表,转载请遵循该协议。
本文地址:https://fenying.net/post/2024/05/27/ssh-too-many-authentication-error/

有一天,我连接任何一台主机时,都会出现 Received disconnect from xxxxx port 22:2: Too many authentication failures 错误,这是什么鬼?

一开始我以为是我昨天 pacman -Syu 滚出了问题,不过为了避免无用功,我先尝试了一下其他主机,发现其他主机都可以正常连接,只有这台主机不行。

我尝试了一下 ssh XXX -vvv,发现它在尝试使用 ssh-agent 里注册的所有密钥进行连接,而且没有一个成功的,最后超出了远端主机的认证尝试次数,所以才会出现这个错误。

而我在 ~/.ssh/config 里设置了 AddKeysToAgent yes,所以在启动 ssh-agent 以来,所有通过 ssh 命令使用的密钥都被注册到了 ssh-agent 里。

网上的文章通常推荐你在 ~/.ssh/config 里设置 IdentitiesOnly yes,这样就只会使用配置文件里指定的密钥,而不会使用 ssh-agent 里的密钥——错了,是不能使用 ssh-agent 里的密钥了——这可不能接受,毕竟设置 AddKeysToAgent yes 的目的就是为了方便使用 ssh-agent 里的密钥。

看来,目前最简单的办法就是……遇到这个问题时,重启一下 ssh-agent——在我找到更好的解决方案之前——反正平时并没有那么多密钥需要注册到 ssh-agent 里,所以重启一下也不是什么大问题。

comments powered by Disqus

翻译: