配置对 EC2 串行控制台的访问 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

配置对 EC2 串行控制台的访问

要配置对串行控制台的访问权限,您必须在账户级别授予串行控制台访问权限,然后配置 IAM 策略以向 IAM 用户授予访问权限。您还必须在每个实例上配置基于密码的用户,以使您的用户能够使用串行控制台进行故障排查。

EC2 串行控制台的访问级别

默认情况下,在账户级别无法访问串行控制台。您需要在账户级别明确授予对串行控制台的访问权限。有关更多信息,请参阅管理账户对 EC2 串行控制台的访问权限

您可以使用服务控制策略 (SCP) 来允许在组织内访问串行控制台。然后,您可以使用 IAM 策略控制访问,从而在 IAM 用户级别实现精确的访问控制。通过使用 SCP 和 IAM 策略的组合,您可以对串行控制台进行不同级别的访问控制。

组织级别

您可以使用服务控制策略 (SCP) 来允许组织内的成员账户访问串行控制台。有关 SCP 的更多信息,请参阅 Amazon Organizations 用户指南中的服务控制策略

实例级别

您可以通过使用 IAM PrincipalTag 和 ResourceTag 构造以及通过其 ID 指定实例,来配置串行控制台访问策略。有关更多信息,请参阅为 EC2 串行控制台访问配置 IAM 策略

IAM 用户级别

您可以通过配置 IAM 策略以允许或拒绝指定用户将 SSH 公钥推送到特定实例的串行控制台服务的权限,来配置用户级别的访问权限。有关更多信息,请参阅为 EC2 串行控制台访问配置 IAM 策略

操作系统级别

您可以在访客操作系统级别设置用户密码。这为某些使用案例提供了对串行控制台的访问权限。但是,要监控日志,您不需要基于密码的用户。有关更多信息,请参阅设置 OS 用户密码

管理账户对 EC2 串行控制台的访问权限

默认情况下,在账户级别无法访问串行控制台。您需要在账户级别明确授予对串行控制台的访问权限。

授权 IAM 用户授予管理账户访问权限

要允许您的 IAM 用户管理对 EC2 串行控制台的账户访问权限,您需要向他们授予所需的 IAM 权限。

以下策略授予查看账户状态以及允许和阻止账户访问 EC2 串行控制台的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:GetSerialConsoleAccessStatus", "ec2:EnableSerialConsoleAccess", "ec2:DisableSerialConsoleAccess" ], "Resource": "*" } ] }

有关更多信息,请参阅 IAM 用户指南 中的创建 IAM 策略

查看账户对串行控制台的访问权限状态

查看账户对串行控制台的访问权限状态(控制台)

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格上,选择 EC2 Dashboard (EC2 控制面板)

  3. Account attributes(账户属性)中,选择 EC2 Serial Console(EC2 串行控制台)。

    EC2 串行控制台访问字段指示账户访问权限为 Allowed(允许)还是 Prevented(阻止)。

    以下屏幕截图显示,阻止了该账户使用 EC2 串行控制台。

查看账户对串行控制台的访问权限状态 (Amazon CLI)

使用 get-serial-console-access-status 命令查看串行控制台的账户访问状态。

aws ec2 get-serial-console-access-status --region us-east-1

在以下输出中,true 表示允许该账户访问串行控制台。

{ "SerialConsoleAccessEnabled": true }

授予账户访问串行控制台的权限。

授予账户访问串行控制台的权限(控制台)

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格上,选择 EC2 Dashboard (EC2 控制面板)

  3. Account attributes(账户属性)中,选择 EC2 Serial Console(EC2 串行控制台)。

  4. 选择管理

  5. 要允许访问账户中所有实例的 EC2 串行控制台,请选中 Allow(允许)复选框。

  6. 选择 Update

授予账户访问串行控制台的权限 (Amazon CLI)

使用 enable-serial-console-access 命令允许账户访问串行控制台。

aws ec2 enable-serial-console-access --region us-east-1

在以下输出中,true 表示允许该账户访问串行控制台。

{ "SerialConsoleAccessEnabled": true }

拒绝账户访问串行控制台

拒绝账户访问串行控制台(控制台)

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格上,选择 EC2 Dashboard (EC2 控制面板)

  3. Account attributes(账户属性)中,选择 EC2 Serial Console(EC2 串行控制台)。

  4. 选择管理

  5. 要阻止访问账户中所有实例的 EC2 串行控制台,请清除 Allow(允许)复选框。

  6. 选择 Update

拒绝账户访问串行控制台 (Amazon CLI)

使用 disable-serial-console-access 命令阻止账户访问串行控制台。

aws ec2 disable-serial-console-access --region us-east-1

在以下输出中,false 表示拒绝该账户访问串行控制台。

{ "SerialConsoleAccessEnabled": false }

为 EC2 串行控制台访问配置 IAM 策略

默认情况下,您的 IAM 用户无权访问串行控制台。您的组织必须配置 IAM 策略以授予 IAM 用户所需的访问权限。有关更多信息,请参阅 IAM 用户指南 中的创建 IAM 策略

对于串行控制台访问,请创建包含 ec2-instance-connect:SendSerialConsoleSSHPublicKey 操作的 JSON 策略文档。此操作授予 IAM 用户将公钥推送到串行控制台服务的权限,该服务将启动串行控制台会话。我们建议限制对特定 EC2 实例的访问。否则,具有此权限的所有 IAM 用户都可以连接到所有 EC2 实例的串行控制台。

明确允许访问串行控制台

默认情况下,没有人可以访问串行控制台。要授予对串行控制台的访问权限,您需要将策略配置为明确允许访问。我们建议配置一个策略以限制对特定实例的访问。

以下策略允许访问由实例 ID 标识的特定实例的串行控制台。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:region:account-id:instance/i-0598c7d356eba48d7" } ] }

明确拒绝访问串行控制台

以下 IAM 策略允许访问标有 *(星号)的所有实例的串行控制台,并明确拒绝访问由 ID 标识的特定实例的串行控制台。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "*" }, { "Sid": "DenySerialConsoleAccess", "Effect": "Deny", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:region:account-id:instance/i-0598c7d356eba48d7" } ] }

使用资源标签控制对串行控制台的访问

您可以使用资源标签来控制对实例的串行控制台的访问。

基于属性的访问控制是一种授权策略,它根据可附加到用户和 Amazon 资源的标签来定义权限。例如,只有当实例的资源标签和委托人标签具有相同的标签键 SerialConsole 值时,以下策略允许 IAM 用户启动该实例的串行控制台连接。

有关使用标签控制对Amazon资源的访问的更多信息,请参阅 IAM 用户指南中的控制对Amazon资源的访问

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowTagBasedSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/SerialConsole": "${aws:PrincipalTag/SerialConsole}" } } } ] }

设置 OS 用户密码

您可以在没有密码的情况下连接到串行控制台。但是,要使用串行控制台对实例进行故障排查,实例必须拥有基于密码的 OS 用户。

您可以为任何 OS 用户(包括根用户)设置密码。请注意,根用户可以修改所有文件,而每个 OS 用户可能只有有限权限。

您必须为要使用串行控制台的每个实例设置用户密码。这是每个实例的一次性要求。

注意

以下说明仅在使用 Amazon 提供的 AMI 启动实例时才适用,因为默认情况下,Amazon 提供的 AMI 不通过基于密码的用户配置。如果您使用已配置了根用户密码的 AMI 启动实例,则可以跳过这些说明。

设置 OS 用户密码

  1. 连接到您的实例。除 EC2 串行控制台连接方法外,您还可以使用任何方法连接到自己的实例。

  2. 要为用户设置密码,请使用 passwd 命令。在以下示例中,用户是 root

    [ec2-user ~]$ sudo passwd root

    下面是示例输出。

    Changing password for user root. New password:
  3. 出现提 New password 示时,输入新密码。

  4. 出现提示时,重新输入密码。