网站搜索

如何修复“SSH 身份验证失败次数过多”错误


有时,在尝试通过SSH连接到远程系统时,您可能会遇到错误“从 x.x.x.x 端口 22:2 接收到断开连接:身份验证失败次数过多”。在这篇简短的文章中,我将解释如何通过几个简单的步骤修复此错误。

另请阅读:在 Linux 中加速 SSH 连接的 4 种方法

以下是我在使用 ssh 客户端时遇到的错误的屏幕截图。

我发现这是因为我的机器上存在许多 ssh 身份密钥,每次运行 ssh 客户端时,它都会尝试 ssh-agent 已知的所有 ssh 密钥以及所有其他密钥,当尝试连接到远程服务器时(vps2,如上面的屏幕截图所示)。这是 ssh 的默认行为。

由于远程服务器上的 ssh 服务器 (sshd) 需要特定的身份密钥,因此服务器会拒绝连接,并且 ssh 客户端会中止并出现上述错误。

要修复此错误,您需要添加值为 yesIdentitiesOnly,它指示 ssh 仅使用在命令行上指定的或在配置中配置的身份验证身份文件ssh_config 文件,即使 ssh-agent 提供其他身份。

例如:

ssh -o IdentitiesOnly=yes vps2

或者,如果您希望它适用于所有 ssh 客户端连接,您可以在 ~/.ssh/config 文件中配置它。

vim ~/.ssh/config

在文件中的 Host * 部分下添加以下配置,如 screennhot.conf 所示。

Host * 
       	IdentitiesOnly=yes

保存文件中的更改并退出。现在,您应该能够运行 ssh,而无需在命令行上指定选项 -o IdentitiesOnly=yes (如图所示)。

ssh vps2

有关详细信息,请参阅 ssh-config 手册页。

man ssh-config

您可能会发现以下 SSH 相关文章很有用。

    1. 如何在 Linux 中创建 SSH 隧道或端口转发
    2. 如何在 Linux 中将默认 SSH 端口更改为自定义端口
    3. 如何在 Linux 中查找所有失败的 SSH 登录尝试
    4. 如何在 Linux 中禁用 SSH Root 登录
    5. 关闭 SSH 后保持远程 SSH 会话运行的 5 种方法

在这篇短文中,我展示了如何轻松修复 ssh 中的“从 x.x.x.x 端口 22:2 接收到断开连接:身份验证失败次数过多”。如果您有任何疑问,请使用下面的评论表联系我们。