解决EC2突然连不上SSH的问题
解决EC2突然连不上SSH的问题

解决EC2突然连不上SSH的问题

内容纲要

解决EC2突然连不上SSH的问题

突然连不上了EC2,不知道什么原因 使用官方教程解决了问题
使用官方的web界面SSH

具体可以参考

https://repost.aws/zh-Hans/knowledge-center/ec2-server-refused-our-key

我在使用 SSH 连接到 Amazon Elastic Compute Cloud(Amazon EC2)实例时收到“Server refused our key(服务器拒绝我们的密钥)”错误。

简短描述

SSH 服务器(sshd)拒绝私有 SSH 密钥的原因有多种。以下是您可能会收到此错误的一些常见原因:

解决方法

您在连接到 EC2 实例时为 AMI 使用不正确的用户名

有关有效用户名的列表,请参阅错误:服务器拒绝我们的密钥或者没有可用的支持身份验证方法

尝试访问实例的用户已从服务器中删除,或账户已锁定

如果尝试访问实例的用户已从服务器中删除,则将该用户作为新用户添加回来。有关更多信息,请参阅如何将具有 SSH 访问权限的新用户账户添加到 Amazon EC2 Linux 实例?

实例存在权限问题,或者您丢失了目录

可以通过四种方法验证实例上的权限和目录:

方法 1:使用 EC2 Serial Console

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

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

方法 2:**使用 AWS Systems Manager Session Manager 登录实例并检查权限**

注意:必须安装 SSM 代理才能使用此方法。有关 Session Manager 和先决条件完整列表的更多信息,请参阅设置 Session Manager

  1. 打开 AWS Systems Manager 控制台
  2. 启动会话
  3. 使用 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)
  1. 如果权限与上述值不匹配,则运行以下命令:
$ 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
  1. 结束会话
  2. 通过 SSH 连接到您的实例。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注