教程:完成使用 EC2 Instance Connect 连接到实例所需的配置
要在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到实例,首先需要完成让您能够成功连接到实例的先决条件配置。本教程旨在引导您完成各项任务以完成先决条件配置。
教程概述
在本教程中,您将完成以下四项任务:
-
任务 1:授予使用 EC2 Instance Connect 所需的权限
首先,您将创建一个 IAM 策略,其中包含允许您将公有密钥推送到实例元数据的 IAM 权限。您将此策略附加到您的 IAM 身份(用户、用户组或角色),以便您的 IAM 身份能够获得这些权限。
-
任务 2:允许从 EC2 Instance Connect 服务到实例的入站流量
然后,您将创建一个安全组,以允许从 EC2 Instance Connect 服务到实例的流量。当您在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到实例时,将需要此安全组。
-
然后,您将使用预装了 EC2 Instance Connect 的 AMI 启动一个 EC2 实例,然后添加上一步中创建的安全组。
-
最后,您将在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到您的实例。如果可以连接,则可以确定在任务 1、2 和 3 中完成的先决条件配置已经成功。
任务 1:授予使用 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 权限。
创建并附加一个允许您使用 EC2 Instance Connect 连接到实例的 IAM 策略
-
首先创建 IAM 策略
打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略。
-
在指定权限页面中,请执行以下操作:
-
对于服务,选择 EC2 Instance Connect。
-
在允许的操作下,在搜索字段中开始键入
send
以显示相关操作,然后选择 SendSSHPublicKey。 -
在资源下,选择全部。对于生产环境,我们建议用 ARN 来指定实例,但在本教程中,您会允许所有实例。
-
选择添加更多权限。
-
对于 服务,选择 EC2。
-
在允许的操作下,在搜索字段中开始键入
describein
以显示相关操作,然后选择 DescribeInstances。 -
选择下一步。
-
-
在查看和创建页面中,请执行以下操作:
-
对于 Policy name(策略名称),输入此策略的名称。
-
选择 创建策略。
-
-
然后将该策略附加到您的身份
-
在 IAM 控制台的导航窗格中,选择 Policies(策略)。
-
在策略列表中,选中要附加的策略名称旁边的选项按钮。您可以使用搜索框筛选策略列表。
-
依次选择操作、附加。
-
在 IAM 实体下,选择您的身份(用户、用户组或角色)旁的复选框。您可以使用搜索框筛选实体列表。
-
选择附加策略。
-
任务 2:允许从 EC2 Instance Connect 服务到实例的入站流量
在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到实例时,必须允许来自 EC2 Instance Connect 服务的流量到达实例。这与从本地计算机连接到实例不同;对于后者,您必须允许从本地计算机到实例的流量。要允许来自 EC2 Instance Connect 服务的流量,您必须创建一个安全组,以允许来自 EC2 Instance Connect 服务的 IP 地址范围的入站 SSH 流量。
AWS 使用前缀列表来管理 IP 地址范围。EC2 Instance Connect 前缀列表的名称如下,请将 region
替换为区域代码:
-
IPv4 前缀列表名称:
com.amazonaws.
region
.ec2-instance-connect -
IPv6 前缀列表名称:
com.amazonaws.
region
.ipv6.ec2-instance-connect
任务目标
您将创建一个安全组,以允许来自实例所在区域的 IPv4 前缀列表的入站 SSH 流量通过端口 22。
创建一个安全组,以允许从 EC2 Instance Connect 服务到实例的入站流量
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择安全组。
-
选择Create security group(创建安全组)。
-
在 Basic details (基本详细信息) 下面,执行以下操作:
-
对于安全组名称,为您的安全组输入一个有意义的名称。
-
对于描述,为您的安全组输入一个有意义的描述。
-
-
在入站规则下,执行以下操作:
-
选择 添加规则。
-
对于 Type,选择 SSH。
-
对于源,请保留自定义。
-
在来源旁的字段中,选择 EC2 Instance Connect 的前缀列表。
例如,假设实例位于美国东部(弗吉尼亚州北部)(
us-east-1
) 区域,并且用户将连接到其公有 IPv4 地址,则选择以下前缀列表:com.amazonaws.us-east-1.ec2-instance-connect
-
-
选择创建安全组。
任务 3:启动实例
启动实例时,必须指定包含启动实例所需信息的 AMI。您可以选择启动已预装或未预装 EC2 Instance Connect 的实例。在本任务中,我们将指定一个预装了 EC2 Instance Connect 的 AMI。
如果您启动未预装 EC2 Instance Connect 的实例,同时又需要使用 EC2 Instance Connect 连接到实例,则需要执行额外的配置步骤。这些步骤不在本教程的介绍范围之内。
任务目标
您要使用预装了 EC2 Instance Connect 的 Amazon Linux 2023 AMI 来启动实例。您还需要指定之前创建的安全组,以便能够在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到实例。由于您将使用 EC2 Instance Connect 连接到实例,这会将一个公有密钥推送到实例元数据中,因此在启动实例时无需指定 SSH 密钥。
启动可以在 Amazon EC2 控制台中使用 EC2 Instance Connect 进行连接的实例
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
屏幕顶部的导航栏中会显示当前所在 AWS 区域(例如,爱尔兰)。选择要在其中启动实例的区域。这一选择十分重要,因为您创建了一个允许特定区域流量的安全组,因此必须选择在同一区域启动实例。
-
从 Amazon EC2 控制台控制面板中,选择启动实例。
-
(可选)在 Name and tags(名称与标签)下,为 Name(名称)输入实例的描述性名称。
-
在应用程序和操作系统映像(亚马逊机器映像)下,选择快速启动。默认会选择 Amazon Linux。在亚马逊机器映像(AMI)下,已默认选择了 Amazon Linux 2023 AMI。对于此任务,请保留默认选择。
-
对于实例类型下的实例类型,请保留默认选择,也可选择其他实例类型。
-
在密钥对(登录)下的密钥对名称,请选择继续操作但不提供密钥对(不推荐)。使用 EC2 Instance Connect 连接到实例时,EC2 Instance Connect 会将一个密钥对推送到该实例的元数据,该密钥正是要用于连接的密钥对。
-
在 Network settings(网络设置)下,执行以下操作:
-
对于自动分配公有 IP,请保留启用。
注意
要在 Amazon EC2 控制台使用 EC2 Instance Connect 连接到实例,实例必须具有一个公有 IPv4 或公有 IPv6 地址。
-
对于防火墙(安全组),请选择选择现有安全组。
-
在常用安全组下,选择您之前创建的安全组。
-
-
在 Summary(摘要)面板中,选择 Launch instance(启动实例)。
任务 4:连接到实例
在使用 EC2 Instance Connect 连接到实例时,EC2 Instance Connect API 会将一个 SSH 公有密钥推送到实例元数据并在其中保留 60 秒。SSH 进程守护程序使用 AuthorizedKeysCommand
和 AuthorizedKeysCommandUser
来查找实例元数据的公有密钥以用于身份验证,然后将您连接到实例。
任务目标
在此任务中,您将在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接到实例。如果您完成了前提任务 1、2 和 3,则连接应该会成功。
连接到实例的步骤
使用以下步骤连接到实例。要观看这些步骤的动画,请参阅 观看动画:连接到实例。
在 Amazon EC2 控制台中使用 EC2 Instance Connect 连接实例
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
屏幕顶部的导航栏中会显示当前所在 AWS 区域(例如,爱尔兰)。选择实例所在的区域。
-
在导航窗格中,选择实例。
-
选择您的实例,然后选择连接。
-
选择 EC2 Instance Connect 选项卡。
-
对于连接类型,选择使用 EC2 Instance Connect 进行连接。
-
选择连接。
这时将在浏览器中打开一个终端窗口,并且您已连接到实例。