Unable to connect to EC2 Linux instance in AWS. Error: Host key verification failed

Unable to connect to EC2 Linux instance in AWS. Error: Host key verification failed

我在 AWS 中创建了一个 EC2 Linux 实例。我使用了 Ubuntu Server 20.04 LTS (HVM) AMI。创建实例后,我下载了密钥对文件 (.pem)。我给它起了个名字“EC2-Key-Pair”。然后我启动了实例。然后在我的 Kali Linux 系统中,我打开一个 Linux 终端,我在其中保存了 .pem 文件。之后我使用了这个命令:

chmod 400 EC2-Key-Pair

在运行这条命令之后,我使用了这条命令:

ssh -i "EC2-Key-Pair.pem" ubuntu@ec2-13-232-252-152.ap-south-1.compute.amazonaws.com

其中 ubuntu 是用户名,

ubuntu@ec2-13-232-252-152.ap-south-1.compute.amazonaws.com

是我实例的 Public IPv4 DNS。但是当我执行这个命令时,我得到这个错误:

Host key verification failed.

如何修复这个错误。我已经使用 sudo 而不是使用 sudo 执行了这个命令。但是两种方式都失败了。即使我在互联网上搜索错误,我也找到了一个解决方案,通过使用这个命令我可以修复这个错误:

ssh-keygen -R Hostname

我在哪里使用实例的 public IPv4 DNS 作为主机名:

ssh-keygen -R ec2-13-232-252-152.ap-south-1.compute.amazonaws.com

但它显示错误:

Cannot stat /home/sanniddha/.ssh/known_hosts: No such file or directory

Error after execute the SSH command as root user

Error after execute the SSH command

Error after execute ssh-keygen -R Hostname

此错误意味着自上次登录以来您的实例发生了一些变化,最恰当的是 您创建了 EC2 实例,没有为该实例分配固定 IP。所以 当您启动此实例时,它将获得(动态)IP 和基于该 IP 的 DNS 名称。 如果您关闭实例并在几个小时后重新启动它,它可能会获得一个新的 IP 和一个新的 DNS 名称。

您遇到的麻烦是因为 ssh 密钥指纹发生了变化。一般来说,这不是一件坏事,您接受警告但仔细检查所有内容。

What is an SSH key fingerprint and how is it generated?

What can cause a changed ssh fingerprint

在您的情况下,这可能是因为您之前启动了一个实例,并且该实例具有添加到 ~/.ssh/known_hosts 文件中的相似 DNS 名称。

xx.xx.xx.xx ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBP2oAPXOCdClEnRzlXuxKtygT3AROcruefiPi6JPdzo+=

您可以通过发出以下命令来清理 ~/.ssh/known_hosts

ssh-keygen -R ec2-13-232-252-152.ap-south-1.compute.amazonaws.com

当您启动新实例时,IP 在实例的 AWS 端被回收。新实例与 ~/.ssh/known_hosts 文件中的实例不同 ssh fingerprint,因此出现警告。

如前所述,您需要为您的 IP 打开端口 22 才能访问该实例。

如果可能,请为 ssh 使用 IP 地址而不是 DNS 名称。另外,对于 ssh,您不需要 sudo