Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
当我尝试通过 SSH 连接到 EC2 实例时,为什么会收到“Server refused our key”(服务器拒绝了我们的密钥)错误?
当我通过 SSH 连接到 Amazon Elastic Compute Cloud (Amazon EC2) 实例时,我收到“Server refused our key”(服务器拒绝了我们的密钥)错误。
简短描述
SSH 服务器 (sshd) 拒绝 SSH 私钥的原因有很多。下面是您收到此错误的一些常见原因:
- 您在尝试连接到 Amazon EC2 实例时使用了错误的私钥文件。有关详细信息,请参阅为什么我在连接到 Amazon EC2 Linux 实例时收到“imported-openssh-key”或“Putty Fatal Error”(Putty 致命错误)错误?
- /etc/ssh/sshd_config 中的 SSH 服务器设置已更改。有关详细信息,请参阅更改实例的 sshd_config 文件后,如何使用 SSH 访问我的 EC2 实例?
- 操作系统无法挂载 (/etc/fstab) 主目录。有关详细信息,请参阅为什么在尝试启动 EC2 Linux 实例时,它会进入紧急模式?
解决方法
您在尝试连接到 Amazon EC2 实例时对 AMI 使用了错误的用户名
常用用户名为 ec2-user、ubuntu、centos、root 或 admin。有关有效用户名的列表,请参阅错误: 服务器拒绝我们的密钥或没有支持的身份验证方法。
用户已从服务器中删除或 AWS 账户已锁定
如果试图访问实例的用户已从服务器上删除,请将该用户重新添加为新用户。有关详细信息,请参阅如何为 Amazon EC2 Linux 实例添加具有 SSH 访问权限的新用户账户?
实例存在权限问题,或者您缺少目录
有四种方法可用于验证实例的权限和目录:
方法 1: 使用 EC2 Serial Console
如果启用了适用于 Linux 的 Amazon EC2 Serial Console,则可以使用串行控制台对支持的基于 Nitro 的实例类型进行故障排除。您可以使用 Amazon EC2 控制台或 AWS 命令行界面 (AWS CLI) 来访问 Serial Console。有关详细信息,请参阅配置对 EC2 Serial Console 的访问。
**方法 2:**使用 AWS Systems Manager 会话管理器登录实例并检查权限
**注意:**必须安装 SSM Agent 才能使用此方法。有关会话管理器的详细信息以及先决条件的完整列表,请参阅设置会话管理器。
-
启动会话。
-
使用 stat 命令确保主目录下文件的权限正确。以下是正确权限示例的列表:
Linux 主目录:/home、(0755/drwxr-xr-x)。
用户的主目录:/home/ec2-user/、(0700/drwx------)。
.ssh 目录权限:/home/ec2-user/.ssh、(0700/drwx------)。
authorized_keys 文件权限:/home/ec2-user/.ssh/authorized_keys、(0600/-rw-------)。
以下是 stat 命令和输出的示例。在本示例中,ec2-user 为用户名。将用户名更改为特定 AMI:$ stat /home/ec2-user/ File: '/home/ec2-user/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 10301h/66305d Inode: 18322 Links: 3 Access: (0700/drwx------) Uid: ( 500/ec2-user) Gid: ( 500/ec2-user)
-
如果权限与前面的值不匹配,请运行以下命令:
$ sudo chown root:root /home$ sudo chmod 755 /home $ sudo chown ec2-user:ec2-user /home/ec2-user -R $ sudo chmod 700 /home/ec2-user /home/ec2-user/.ssh $ sudo chmod 600 /home/ec2-user/.ssh/authorized_keys
-
结束会话。
-
通过 SSH 连接到您的实例。
方法 3: 要自动更正导致错误的问题,请运行 AWSSupport-TroubleshootSSH 文档
AWSSupport-TroubleshootSSH 自动化文档会在实例上安装 Amazon EC2Rescue 工具。然后,该自动化文档会检查并更正通过 SSH 连接 Linux 计算机时导致远程连接错误的问题。有关详细信息,请参阅我在尝试使用 SSH 连接我的 EC2 实例时收到错误。如何使用 AWSSupport-TroubleshootSSH 自动化工作流程解决 SSH 连接问题?
方法 4: 使用用户数据修复实例的权限
重要说明:
- 此恢复过程要求您停止并启动实例。当您这样做时,实例存储卷上的数据会丢失。有关详细信息,请参阅 Amazon EC2 实例的根卷。
- 如果您的实例是 Amazon EC2 自动扩缩组的一部分,则该实例可能会在停止时终止。这也可能发生在使用 AWS Auto Scaling 的服务(例如 Amazon EMR、AWS CloudFormation 或 AWS Elastic Beanstalk)启动的实例上。在这种情况下,是否会发生实例终止取决于自动扩缩组的实例缩减保护设置。如果您的实例是自动扩缩组的一部分,在开始执行解决步骤之前,请从自动扩缩组中删除该实例。完成解决步骤后,您可以将实例重新添加到自动扩缩组。
- 停止并重启实例会更改实例的公有 IP 地址。当您将外部流量路由到您的实例时,最佳做法是使用弹性 IP 地址而不是公有 IP 地址。
- 如果实例的根设备是实例存储卷,则无法使用用户数据更改 SSH 密钥。有关详细信息,请参阅 Amazon EC2 实例的根卷。
- 对实例的用户数据的更新适用于所有支持 cloud-init 指令的发行版。必须安装和配置 Cloud-init。有关详细信息,请参阅 Cloud-init 网站上的 SSH - 配置 SSH 和 SSH 密钥。
完成以下步骤:
-
打开 Amazon EC2 控制台,然后选择您的实例。
-
选择 Instance State(实例状态),然后选择 Stop instance(停止实例)。
**注意:**如果 Stop(停止)不可用,则表示实例已停止或者其根设备是实例存储卷。 -
依次选择 Actions(操作)和 Instance Settings(实例设置),然后选择 Edit User Data(编辑用户数据)。
-
将以下命令复制到 User Data(用户数据)字段,然后选择 Save(保存)。请确保复制整个命令,不要添加额外的空格。
**注意:**以下命令使用用户名 ec2-user。请将 ec2-user 更改为您的 AMI 的用户名。Content-Type: multipart/mixed; boundary="//"MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --//Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash chown root:root /home chmod 755 /home chown ec2-user:ec2-user /home/ec2-user -R chmod 700 /home/ec2-user /home/ec2-user/.ssh chmod 600 /home/ec2-user/.ssh/authorized_keys --//
-
启动实例,然后使用 SSH 连接到实例。
**注意:**默认情况下,用户数据命令对于每个实例运行一次。此过程更改了默认行为,为实例的每次重启、停止或启动添加公钥。要恢复默认行为,请删除自定义用户数据。最佳做法是遵循安全协议并允许用户数据在实例首次启动后运行。您可以使用 ModifyInstanceAttribute API 方法修改实例的用户数据。要限制对此方法的访问权限,请使用 IAM 策略。
相关信息
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前