AWS 主机密钥验证失败

AWS 主机密钥验证失败

过去几天,我在 ssh 进入任何 AWS EC2 实例时都遇到了一些问题。上周三(四天前),我能够顺利登录 EC2 并使用 Docker 安装 Jenkins。周四早上,我尝试登录同一个 EC2,但收到“主机密钥验证失败”的消息。从那时起,我尝试了以下操作:

  • 仔细检查了 EC2 上的入站规则,以验证是否允许在端口 22 上进行访问
  • 仔细检查子网上的网络 ACL,以验证是否允许在端口 22 上进行访问
  • 删除了 Mac 上的 ~/.ssh/known_hosts 文件,认为这可能是 RSA 密钥问题,如所描述的那样这里据我了解,成功连接后将重新创建 known_hosts 文件。
  • 启动了第二个 EC2,它是第一个 EC2 的克隆(CentOS 7 社区 AMI,ami-b81dbfc5),并尝试在该 EC2 中进行 SSH(失败)
  • 启动了第三个 EC2,它是第一个的克隆,但使用了新的 pem 文件(失败)
  • 将笔记本电脑换成 Ubuntu 16.04,并使用第二个 pem 文件尝试连接第三个 EC2(失败)
  • 使用默认配置启动了 Amazon 的标准 AMI (ami-467ca739),并尝试使用 Ubuntu 机器上的第二个 pem 文件连接到该 EC2(失败)

请注意,前两次 EC2 尝试都与这些虚拟机关联了弹性 IP。最后两次 EC2 没有关联弹性 IP,以防这是问题的根源。所有 EC2 都部署在北弗吉尼亚地区,并且部署在同一个 VPC 内。

不管怎样,我希望登录 EC2,以便将 Jenkins 用户添加到 Docker 用户组。我正在尝试设置一个 devops 管道。然而,显然无法登录任何 EC2 是根本问题和核心阻碍因素。

以下是 ssh 尝试中的一些详细输出。我很难想出我还能尝试什么,但通常当这种情况发生时,这意味着我忽略了一些东西 :-)。有什么想法可以阻止多个客户端登录区域中的任何 EC2?我能想到的只有子网上的网络 ACL 和 EC2 上的入站规则,但正如前面提到的,这些都是开放的。更有可能的是,我没有理解详细输出,不知道下一步要尝试的操作。提前致谢!


public:pem-files$ ssh -i fresh-ec2-test-180513.pem [email protected] -v
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to ec2-18-205-21-67.compute-1.amazonaws.com [18.205.21.67] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file fresh-ec2-test-180513.pem type -1
debug1: key_load_public: No such file or directory
debug1: identity file fresh-ec2-test-180513.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to ec2-18-205-21-67.compute-1.amazonaws.com:22 as 'ec2-user'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
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:oeuVV0FGR89PJZvDi+oFvE+ltn5hN8T1Gtf6EjhUC9w
The authenticity of host 'ec2-18-205-21-67.compute-1.amazonaws.com (18.205.21.67)' can't be established.
ECDSA key fingerprint is SHA256:oeuVV0FGR89PJZvDi+oFvE+ltn5hN8T1Gtf6EjhUC9w.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.

答案1

尝试从本地机器上删除此主机的密钥~/.ssh/known_hosts,并在被问到“您确定要继续连接(是/否)吗?”时回答“是”。如果您需要以编程方式执行此操作而无需人工干预,您可以这样做,ssh -oStrictHostKeyChecking=no但显然不建议这样做。

答案2

这似乎是“主机密钥验证失败”问题的第一个问答,所以我将在这里发表我的评论。

当我尝试使用非默认 2222 端口的 SFTP 时,我遇到了同样的错误。经过几次尝试并启用详细模式后,我发现我输入的命令不正确,因此我得到了无效的已知主机条目。

错误的:

sftp -v user@myhostname:2222

正确的:

sftp -P 2222 -v user@myhostname

所以,注意你使用的端口因为它会影响已知主机和进一步的连接。

相关内容