无法连接到 AWS 中的 EC2 Linux 实例错误:主机密钥验证失败

问题描述

我在 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

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

主机密钥验证失败。

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

ssh-keygen -R Hostname

我使用实例的公共 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

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

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 fingerprint 与您在 ~/.ssh/known_hosts 文件中的不同,因此出现警告。

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...