【问题标题】:Unable to connect to EC2 Linux instance in AWS. Error: Host key verification failed无法连接到 AWS 中的 EC2 Linux 实例。错误:主机密钥验证失败
【发布时间】:2021-06-11 20:48:18
【问题描述】:

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

【问题讨论】:

    标签: amazon-web-services amazon-ec2 ssh amazon-linux kali-linux


    【解决方案1】:

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

    【讨论】:

    • 在创建实例的过程中,在配置安全组页面中,我将类型设置为自定义 TCP,并将端口范围设置为 8888。在源中,从下拉列表中选择我的 IP
    • 你需要打开22端口才能ssh
    • 还有 22 个端口。我的例子中有两条规则。默认情况下已经创建了第一条规则,其中类型为 SSH,协议为 TCP,端口为 22,源为自定义。其次,那是我创造的。
    【解决方案2】:

    您因为 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 才能访问实例。

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

    【讨论】:

    • 我使用“ssh-keygen -R ec2-13-232-252-152.ap-south-1.compute.amazonaws.com”命令清理~/.ssh/known_hosts。但它显示“无法统计/home/sanniddha/.ssh/known_hosts:没有这样的文件或目录”的错误。我也通过不使用 sudo 来运行 SSH 命令。但同样的问题。还有22个端口。我的例子中有两条规则。默认情况下已经创建了第一条规则,其中类型为 SSH,协议为 TCP,端口为 22,源为自定义。第二,那是我创造的
    • @SanniddhaChakrabarti 你能手动检查~/.ssh/known_hosts 是否存在吗?你在用windows吗? .你能接受这个警告吗?
    • 我正在使用 Kali Linux
    • @SanniddhaChakrabarti 表示您尝试 ssh 的基本操作系统
    • 我的系统有 Kali Linux 操作系统。我正在尝试从 Linux 连接到 AWS 实例。
    猜你喜欢
    • 2012-01-23
    • 2018-11-13
    • 2023-03-18
    • 2020-07-15
    • 2018-04-06
    • 2020-12-16
    • 2015-05-20
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多