被锁定在自己的服务器之外:通过 ssh 连接时立即收到“身份验证失败次数过多”的信息

被锁定在自己的服务器之外:通过 ssh 连接时立即收到“身份验证失败次数过多”的信息

我有一个用于宠物项目的 AWS EC2 Ubuntu 实例。有一天,当我尝试登录时,出现了以下错误:

~$ ssh -i"/home/kona/.ssh/aws_kona_id" [email protected] -p22 
Enter passphrase for key '/home/kona/.ssh/aws_kona_id': 
Received disconnect from [IP address] port 22:2: Too many authentication failures
Disconnected from [IP address] port 22
~$

kona是此服务器上唯一启用的帐户

我尝试过重新启动服务器、更改 IP 地址并等待。

编辑:

kona@arcticjieer:~$ ssh -o "IdentitiesOnly yes" -i"/home/kona/.ssh/aws_kona_id" -v [email protected] -p22 
OpenSSH_8.1p1 Debian-1, OpenSSL 1.1.1d  10 Sep 2019
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to ec2-3-17-146-113.us-east-2.compute.amazonaws.com [3.17.146.113] port 22.
debug1: Connection established.
debug1: identity file /home/kona/.ssh/aws_kona_id type -1
debug1: identity file /home/kona/.ssh/aws_kona_id-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.1p1 Debian-1
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* compat 0x04000002
debug1: Authenticating to ec2-3-17-146-113.us-east-2.compute.amazonaws.com:22 as 'kona'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:D3sIum9dMyyHNjtnL7Pr4u5DhmP5aQ1jaZ8Adsdma9E
debug1: Host 'ec2-3-17-146-113.us-east-2.compute.amazonaws.com' is known and matches the ECDSA host key.
debug1: Found key in /home/kona/.ssh/known_hosts:41
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: /home/kona/.ssh/aws_kona_id  explicit
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/kona/.ssh/aws_kona_id
Enter passphrase for key '/home/kona/.ssh/aws_kona_id': 
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
[email protected]: Permission denied (publickey).
kona@arcticjieer:~$ 

答案1

这个错误通常意味着你得到了加载了太多按键ssh-agent

解释:您的 ssh 客户端将尝试逐个使用 中的所有密钥,ssh-agent然后才能使用 指定的密钥-i aws_kona_id。是的,这有点违反直觉。因为每次这样的尝试都算作一次验证失败默认情况下,SSH 服务器只允许 5 次尝试,您会收到以下错误:身份验证失败次数过多

您可以查看尝试使用的身份(密钥)ssh -v

解决方案是告诉ssh仅使用命令行上指定的身份:

ssh -o "IdentitiesOnly yes" -i ~/.ssh/aws_kona_id -v [email protected]

如果没有帮助,请在此处发布该命令的输出。

答案2

我认为 MLu 的答案在这种情况下可能是正确的。验证这一点的方法是运行命令行 ssh 命令,为服务器指定正确的密钥。

ssh -i "keyfile.pem" [email protected]

如果这不起作用,并且在“我被锁定在服务器之外,救命!”的一般情况下,通常建议的方法是将卷作为数据卷安装到另一个实例。

  1. 停止 EC2 服务器。
  2. 装载卷作为数据卷放到新实例上。
  3. 进行任何必要的调查或修复(查看日志、添加密钥等)。这可以包括创建新用户和新密钥、更改文件系统上的文件等。
  4. 将该卷作为根卷挂载到原始实例上。

重复此操作,直到您获得访问权限。如果您无法获得访问权限,此操作至少可以让您访问您的数据。

答案3

SSH 默认尝试所有可用的 SSH 密钥。它以“随机”顺序执行此操作。指定该-i选项只是告诉 SSH 将该密钥文件添加到要尝试的密钥列表中。

确实如此不是

  • 限制 SSH 仅使用该密钥
  • 告诉 SSH 尝试该密钥第一的

最终发生的情况(如果您使用多个密钥,则经常会发生)是 SSH 尝试几个不起作用的随机密钥,并且服务器停止接受来自客户端的身份验证尝试。

如果你想告诉 SSH“使用仅有的此键”必须指定IdentitiesOnly yes选项:

ssh -o "IdentitiesOnly yes" -i"/home/kona/.ssh/aws_kona_id" [email protected] -p22 

IdentitiesOnly yes告诉 SSH 仅使用明确指定的密钥(在这种情况下仅使用指定的密钥-i)。

这就是为什么当我为不同的主机使用自定义密钥时总是在 中定义主机配置.ssh/config。这样我就可以使用一个简单的别名,更重要的是,指定IdentitiesOnly yes要使用哪个键来避免这种错误:

Host kona.server
    Hostname server.akona.me
    IdentityFile ~/.ssh/aws_kona_id
    IdentitiesOnly yes
    Port 22
    User kona

完成上述操作后,.ssh/config您只需使用以下简单方法即可登录您的服务器:

$ ssh kona.server

答案4

尝试过多密钥是本地机器的问题,而不是服务器的问题。只需使用以下命令从本地 ssh-agent 内存中清除密钥即可

ssh-add -D

或者如果你知道哪个密钥与服务器错误关联,请使用

ssh-add -d <identity>

这可能要求您在下次连接时重新输入其他密钥/服务器组合的密码,但它将消除 EC2 机器上的登录阻止。

相关内容