Louisa 可帮助您排查
在使用 Amazon EC2 时的
“server refused our key”错误。

Loiusa_ec2-server-refused-our-key-1

我无法使用 SSH 连接到 Amazon Elastic Compute Cloud (Amazon EC2) 实例,并且收到以下错误消息:“Server refused our key”。我如何解决此问题?

在以下情况下,您可能无法登录 EC2 实例:

  • 您正在使用 SSH 私有密钥,但 authorized_keys 文件中没有相应的公有密钥。
  • 您没有 authorized_keys 文件的权限。
  • 您没有 .ssh 文件夹的权限。
  • 您的 authorized_keys 文件或 .ssh 文件夹命名不正确。
  • 您的 authorized_keys 文件或 .ssh 文件夹已被删除。
  • 您的实例是在没有密钥的情况下启动的,或者是使用不正确的密钥启动的。

要在收到“Server refused our key”错误后连接到 EC2 实例,您可以更新实例的用户数据,将指定的 SSH 公有密钥附加到 authorized_keys 文件,该文件用于为 SSH 目录和其中包含的文件设置适当的所有权和文件权限。

在开始更新实例用户数据的过程之前,请注意以下事项:

  • 如果对主目录的权限已失效,则该过程无法解决问题。此时必须手动更正主目录权限。
  • 该过程适用于所有支持 cloud-init 指令的分配。要使这些指令成功运行,必须安装和配置 Cloud-init。有关 cloud-init SSH 模块的更多信息,请参阅配置 ssh 和 ssh 密钥
  • 您必须在此过程开始时停止您的实例。临时卷上的任何数据都会丢失。
  • 如果您的实例的根设备是实例存储卷,则无法使用此过程更改 SSH 密钥。

按照以下步骤更新实例的用户数据,以将指定的 SSH 公有密钥附加到 authorized_keys 文件:

1.    从 Amazon EC2 控制台中,选择您的实例。

2.    依次选择操作实例状态停止注意:如果停止处于禁用状态,则表示要么实例已停止,要么其根设备是一个实例存储卷。如果您的实例的根设备是实例存储卷,则无法使用此过程更改 SSH 密钥。

3.    根据您要连接的操作系统,通过以下方式之一找到 SSH 公有密钥:

Linux:运行如下命令:

# ssh-keygen -y -f /path/to/keypair.pem

Windows:打开 PuTTYGen。然后,加载您的 .PEM 文件。公有密钥会出现在标题为“Public key for pasting into OpenSSH authorized_keys file”的框中。

4.    记下该 SSH 公有密钥。在稍后的步骤中,您需要用到该公有密钥。

5.    返回 Amazon EC2 控制台,并选择您的实例。

6.    依次选择操作实例设置查看/更改用户数据

7.    在查看/更改用户数据对话框中,为用户数据键入以下代码段。注意:将 SSH 公有密钥作为 ssh-rsa 的值输入。该值必须与公有密钥完全匹配,不应该有额外的空格或字符。

#cloud-config
ssh_deletekeys: false
ssh_authorized_keys:
  - ssh-rsa ENTER YOUR PUBLIC KEY HERE ...
cloud_final_modules:
  - [ssh, always]

8.选择保存

9.    依次选择操作实例状态启动

实例启动后,您可以使用相应用户名登录。有关 Amazon Linux、RHEL、Ubuntu、CentOS、Fedora 和 SUSE Amazon 系统映像 (AMI) 的用户名列表,请参阅连接到您的 Linux 实例。如果 ec2-user 和 root 无法使用,请与您的 AMI 供应商核实。

注意:默认情况下,用户数据脚本针对每个实例运行一次。此过程会将默认行为更改为在每次重新启动、停止或启动实例时添加公有密钥。要恢复默认行为,请删除自定义用户数据。作为一项最佳实践,请考虑允许在实例首次启动之后运行用户数据所产生的安全影响。您可以使用 ModifyInstanceAttribute API 方法修改实例的用户数据。要限制对此方法的访问,请使用 AWS Identity and Access Management (IAM) 策略


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助?请访问 AWS 支持中心

发布时间:2017 年 6 月 26 日

更新时间:2018 年 5 月 21 日