问题描述
我在 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