连接 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例时,为什么我会收到“imported-openssh-key”或“Putty Fatal Error”错误?

上次更新时间:2021 年 5 月 12 日

连接 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例时,我收到了“imported-openssh-key”(导入了 openssh 密钥)或“Putty Fatal Error”(Putty 致命错误)错误。该如何处理这些错误?

简短描述

使用 SSH 连接 Linux 实例时,我收到类似于以下内容的错误:

“使用用户名 "root"。使用公钥 "imported-openssh-key" 进行身份验证,请以用户 "ec2-user" 而不是用户 "root" 的身份登录。”

-或者-

使用 PuTTY 客户端时,我收到类似于以下内容的错误:

“PuTTY 致命错误:连接已断开:没有受支持的身份验证方法可用(服务器发送:公钥)确定

以下情况可能会发生这些错误:

  • 在与 EC2 实例协商 SSH 会话时,您没有使用适用于 AMI 的适当用户名进行连接。
  • 在与 EC2 实例协商 SSH 会话时,您使用了错误的私钥。

解决方法

验证是否使用正确的用户名进行连接

在本地计算机上,验证接使用的用户名是否适当连。有关适当用户名的完整列表,请参阅排查实例的连接问题

验证私钥是否正确

1.    打开 Amazon EC2 控制台,然后选择实例

2.    查找要使用 SSH 连接的 EC2 实例。

3.    在 Key Name(密钥名称)列中,验证您通过 SSH 连接时使用的私钥的名称:

PuTTY

验证 SSH 私钥是否与您在控制台中 EC2 实例的 Key Name(密钥名称)列中看到的私钥相同。

验证是否已将私钥(.pem)文件转换为 PuTTY 可识别的格式(.ppk)。有关更多信息,请参阅使用 PuTTYgen 转换私有密钥

macOS 或 Linux

通过运行以下命令,确保已更改密钥对文件的权限,以便只有您才能来查看它:

$ chmod 400 my-key-pair.pem

检查在 -i 标志后指定的目录和文件名,确保它是指向私钥的正确路径,如以下示例命令所示:

$ ssh -i my-key-pair.pem ec2-user@52.4.XX.XX

使用 EC2 串行控制台

如果您为 Linux 启用了 EC2 串行控制台,则可以使用它来排查受支持的基于 Nitro 的实例类型问题。串行控制台可帮助您排查启动问题、网络配置和 SSH 配置问题。串行控制台无需网络连接即可连接到您的实例。您可以使用 Amazon EC2 控制台或 AWS 命令行界面 (AWS CLI) 访问串行控制台。

在使用串行控制台之前,请在账户层面授予对串行控制台的访问权限。然后,创建 AWS Identity and Access Management (IAM) 策略,授予对 IAM 用户的访问权限。此外,每个使用串行控制台的实例都必须至少包含一个基于密码的用户。如果您的实例无法访问,并且尚未配置对串行控制台的访问权限,请按照方法 2、3 或 4 中的说明进行操作。有关为 Linux 配置 EC2 串行控制台的信息,请参阅配置对 EC2 串行控制台的访问权限

注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI