教程:完成使用 EC2 Instance Connect 连接到实例所需的配置 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

教程:完成使用 EC2 Instance Connect 连接到实例所需的配置

要在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到实例,首先需要完成让您能够成功连接到实例的先决条件配置。本教程旨在引导您完成各项任务以完成先决条件配置。

教程概述

在本教程中,您将完成以下四项任务:

任务 1:创建并附加 IAM 策略以允许您使用 EC2 Instance Connect

在使用 EC2 Instance Connect 连接到实例时,EC2 Instance Connect API 会将一个 SSH 公有密钥推送到实例元数据并在其中保留 60 秒。您需要将一个 IAM 策略附加到您的 IAM 身份(用户、用户组或角色),以授予您将公有密钥推送到实例元数据的必要权限。

任务目标

在此任务中,您将创建一个 IAM 策略,以授予将公有密钥推送到实例的权限。要允许的具体操作是 ec2-instance-connect:SendSSHPublicKey。您还必须允许 ec2:DescribeInstances 操作,以确保您能够在 Amazon EC2 控制台中查看和选择您的实例。

创建好策略后,您将此策略附加到您的 IAM 身份(用户、用户组或角色),以便您的 IAM 身份能够获得相关权限。

您将创建一个配置如下的策略:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }
重要

本教程中创建的 IAM 策略是一个权限十分宽松的策略;它允许您使用任何 AMI 用户名连接到任何实例。我们使用这种高度宽松的策略来确保教程的简单性,并侧重于本教程所讲授的具体配置。但在生产环境中,我们建议您将 IAM 策略配置为提供最低权限。有关示例 IAM policies,请参阅 为 EC2 Instance Connect 授予 IAM 权限

创建和附加 IAM 策略的步骤

使用以下步骤创建和附加 IAM 策略。要观看这些步骤的动画,请参阅 观看动画:创建 IAM 策略观看动画:附加 IAM 策略

创建并附加一个允许您使用 EC2 Instance Connect 连接到实例的 IAM 策略
  1. 首先创建 IAM 策略

    1. 打开 IAM 控制台:https://console.aws.amazon.com/iam/

    2. 在导航窗格中,选择策略

    3. 选择创建策略

    4. 指定权限页面中,请执行以下操作:

      1. 对于服务,选择 EC2 Instance Connect

      2. 允许的操作下,在搜索字段中开始键入 send 以显示相关操作,然后选择 SendSSHPublicKey

      3. 资源下,选择全部。对于生产环境,我们建议用 ARN 来指定实例,但在本教程中,您会允许所有实例。

      4. 选择添加更多权限

      5. 对于 服务,选择 EC2

      6. 允许的操作下,在搜索字段中开始键入 describein 以显示相关操作,然后选择 DescribeInstances

      7. 选择下一步

    5. 查看和创建页面中,请执行以下操作:

      1. 对于 Policy name(策略名称),输入此策略的名称。

      2. 选择创建策略

  2. 然后将该策略附加到您的身份

    1. 在 IAM 控制台的导航窗格中,选择 Policies(策略)。

    2. 在策略列表中,选中要附加的策略名称旁边的选项按钮。您可以使用搜索框筛选策略列表。

    3. 依次选择操作附加

    4. IAM 实体下,选择您的身份(用户、用户组或角色)旁的复选框。您可以使用搜索框筛选实体列表。

    5. 选择附加策略

此动画将演示如何创建 IAM 策略。要查看此动画的文字版,请参阅前面过程中的步骤。
此动画演示如何将 IAM 策略附加到 IAM 身份。要查看此动画的文字版,请参阅前面过程中的步骤。

任务 2:创建一个安全组,以允许从 EC2 Instance Connect 服务到实例的入站流量

在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到实例时,必须允许来自 EC2 Instance Connect 服务的流量到达实例。这与从本地计算机连接到实例不同;对于后者,您必须允许从本地计算机到实例的流量。要允许来自 EC2 Instance Connect 服务的流量,您必须创建一个安全组,以允许来自 EC2 Instance Connect 服务的 IP 地址范围的入站 SSH 流量。

Amazon 服务的 IP 地址范围可在 https://ip-ranges.amazonaws.com/ip-ranges.json 中查找。EC2 Instance Connect 的 IP 地址范围用 "service": "EC2_INSTANCE_CONNECT" 来标识。

任务目标

在本任务中,您首先要查找 EC2_INSTANCE_CONNECT 在实例所在 Amazon Web Services 区域中的 IP 地址范围。然后您将创建一个安全组,以允许来自该 IP 地址范围的入站流量通过端口 22。

创建安全组的步骤

使用以下步骤创建安全组。要观看这些步骤的动画,请参阅 观看动画:获取 EC2 Instance Connect 在特定区域的 IP 地址范围观看动画:配置安全组

创建一个安全组,以允许从 EC2 Instance Connect 服务到实例的入站流量
  1. 首先获取 EC2 Instance Connect 服务的 IP 地址范围

    1. 打开位于 https://ip-ranges.amazonaws.com/ip-ranges.json 的 Amazon IP 地址范围 JSON 文件。

    2. 选择原始数据

    3. 查找 EC2_INSTANCE_CONNECT 在实例所在 Amazon Web Services 区域中的 IP 地址范围。您可以使用浏览器搜索字段来搜索服务 EC2_INSTANCE_CONNECT,并继续搜索,直到找到实例所在的区域为止。

      例如,假设实例位于美国东部(弗吉尼亚州北部)区域(us-east-1),则 EC2_INSTANCE_CONNECT 在该区域的 IP 地址范围为 18.206.107.24/29

      注意

      每个 Amazon Web Services 区域的 IP 地址范围都不同。

    4. 复制 ip_prefix 旁显示的 IP 地址范围。您将在此过程的稍后阶段使用此 IP 地址范围。

    有关下载 Amazon IP 地址范围 JSON 文件以及按服务进行筛选的更多信息,请参阅《Amazon VPC 用户指南》中的 Amazon IP 地址范围

  2. 然后使用允许来自所复制 IP 地址范围的流量的入站规则创建安全组

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

    2. 在导航窗格中,选择安全组

    3. 选择Create security group(创建安全组)。

    4. Basic details (基本详细信息) 下面,执行以下操作:

      1. 对于安全组名称,为您的安全组输入一个有意义的名称。

      2. 对于描述,为您的安全组输入一个有意义的描述。

    5. 入站规则下,执行以下操作:

      1. 选择 添加规则

      2. 对于 Type,选择 SSH

      3. 对于,请保留自定义

      4. 旁边的字段中,粘贴您在本过程的前面阶段复制的 EC2 Instance Connect 服务的 IP 地址范围。

        例如,假设实例位于美国东部(弗吉尼亚州北部)区域(us-east-1),则将以下 IP 地址范围粘贴到此字段中:18.206.107.24/29

    6. 选择创建安全组

此动画将演示如何获取 EC2 Instance Connect 在特定区域的 IP 地址范围。要查看此动画的文字版,请参阅前面过程中的步骤。
此动画将演示如何配置安全组。要查看此动画的文字版,请参阅前面过程中的步骤。

任务 3:启动实例

启动实例时,必须指定包含启动实例所需信息的 AMI。您可以选择启动已预装或未预装 EC2 Instance Connect 的实例。在本任务中,我们将指定一个预装了 EC2 Instance Connect 的 AMI。

如果您启动未预装 EC2 Instance Connect 的实例,同时又需要使用 EC2 Instance Connect 连接到实例,则需要执行额外的配置步骤。这些步骤不在本教程的介绍范围之内。

任务目标

在此任务中,您将使用 Amazon Linux 2023 AMI 启动一个实例,其中预装了 EC2 Instance Connect。您还需要指定之前创建的安全组,以便能够在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到实例。由于您将使用 EC2 Instance Connect 连接到实例,这会将一个公有密钥推送到实例元数据中,因此在启动实例时无需指定 SSH 密钥。但您必须确保实例具有公有 IPv4 地址,因为仅支持在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到具有公有 IPv4 地址的实例。

启动实例的步骤

使用以下步骤启动实例。要观看这些步骤的动画,请参阅 观看动画:启动实例

启动可以在 Amazon EC2 控制台中使用 EC2 Instance Connect 进行连接的实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 屏幕顶部的导航栏中会显示当前所在 Amazon 区域(例如,爱尔兰)。选择要在其中启动实例的区域。这一选择十分重要,因为您创建了一个允许特定区域流量的安全组,因此必须选择在同一区域启动实例。

  3. 从 Amazon EC2 控制台控制面板中,选择启动实例

  4. (可选)在 Name and tags(名称与标签)下,为 Name(名称)输入实例的描述性名称。

  5. 应用程序和操作系统映像(亚马逊机器映像)下,选择快速启动。默认会选择 Amazon Linux。在亚马逊机器映像(AMI)下,已默认选择了 Amazon Linux 2023 AMI。对于此任务,请保留默认选择。

  6. 对于实例类型下的实例类型,请保留默认选择,也可选择其他实例类型。

  7. 密钥对(登录)下的密钥对名称,请选择继续操作但不提供密钥对(不推荐)。使用 EC2 Instance Connect 连接到实例时,EC2 Instance Connect 会将一个密钥对推送到该实例的元数据,该密钥正是要用于连接的密钥对。

  8. Network settings(网络设置)下,执行以下操作:

    1. 对于自动分配公有 IP,请保留启用

      注意

      要在 Amazon EC2 控制台使用 EC2 Instance Connect 连接到实例,实例必须具有一个公有 IPv4 地址。

    2. 对于防火墙(安全组),请选择选择现有安全组

    3. 常用安全组下,选择您之前创建的安全组。

  9. Summary(摘要)面板中,选择 Launch instance(启动实例)。

此动画将演示如何启动实例。要查看此动画的文字版,请参阅前面过程中的步骤。

任务 4:连接到实例

在使用 EC2 Instance Connect 连接到实例时,EC2 Instance Connect API 会将一个 SSH 公有密钥推送到实例元数据并在其中保留 60 秒。SSH 进程守护程序使用 AuthorizedKeysCommandAuthorizedKeysCommandUser 来查找实例元数据的公有密钥以用于身份验证,然后将您连接到实例。

任务目标

在此任务中,您将在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到实例。如果您完成了前提任务 1、2 和 3,则连接应该会成功。

连接到实例的步骤

使用以下步骤连接到实例。要观看这些步骤的动画,请参阅 观看动画:连接到实例

在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 屏幕顶部的导航栏中会显示当前所在 Amazon 区域(例如,爱尔兰)。选择实例所在的区域。

  3. 在导航窗格中,选择实例

  4. 选择您的实例,然后选择连接

  5. 选择 EC2 Instance Connect 选项卡。

  6. 对于连接类型,选择使用 EC2 Instance Connect 进行连接

  7. 选择连接

    这时将在浏览器中打开一个终端窗口,并且您已连接到实例。

此动画将演示如何使用 EC2 Instance Connect 连接实例。要查看此动画的文字版,请参阅前面过程中的步骤。