使用 EC2 Instance Connect 进行连接 - Amazon Elastic Compute Cloud

使用 EC2 Instance Connect 进行连接

以下说明介绍如何使用 EC2 Instance Connect 连接到 Linux 实例。

决定使用哪个连接选项。要使用的连接选项取决于您的实例是否具有公有 IPv4 地址:

  • Amazon EC2 控制台 - 要使用 Amazon EC2 控制台进行连接,实例必须具有公有 IPv4 地址。

  • SSH 客户端 - 如果实例没有公有 IP 地址,则可以使用 SSH 客户端通过私有网络连接到实例。例如,您可以从同一 VPC 内,或通过 VPN 连接、Transit Gateway 或 AWS Direct Connect 进行连接。

EC2 Instance Connect 不支持使用 IPv6 地址进行连接。

提示

EC2 Instance Connect 是连接到 Linux 实例的选项之一。有关其他选项,请参阅 连接到您的 Linux 实例。要连接到 Windows 实例,请参阅连接到您的 Windows 实例

使用 Amazon EC2 控制台连接

您可以在控制台中选择实例,然后选择使用 EC2 Instance Connect 进行连接,从而使用 Amazon EC2 控制台连接到实例。Instance Connect 处理权限并提供成功的连接。

要使用 Amazon EC2 控制台进行连接,实例必须具有一个公有 IPv4 地址。在连接之前,请务必查看所有先决条件

从 Amazon EC2 控制台使用基于浏览器的客户端连接到您的实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择实例,然后选择连接

  4. 选择 EC2 Instance Connect 选项卡。

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

  6. 对于用户名,请验证用户名。

  7. 选择连接以打开终端窗口。

使用您自己的密钥和 SSH 客户端进行连接

您可以使用自己的 SSH 密钥,并在使用 EC2 Instance Connect API 时从您选择的 SSH 客户端连接到您的实例。这使您能够从将公有密钥推送到实例的 Instance Connect 功能中受益。此连接方法适用于具有公有和私有 IP 地址的实例。

要求
  • 密钥对的要求

  • 当连接到仅具有私有 IP 地址的实例时,启动 SSH 会话的本地计算机必须连接到 EC2 Instance Connect 服务终端节点(将 SSH 公钥推送到实例)以及到实例的私有 IP 地址的网络连接,才能建立 SSH 会话。EC2 Instance Connect 服务终端节点可以通过互联网或 AWS Direct Connect 公共虚拟接口访问。要连接到实例的私有 IP 地址,您可以利用 AWS Direct ConnectAWS Site-to-Site VPNVPC 对等连接等服务。

在连接之前,请务必查看所有先决条件

使用您自己的密钥和任何 SSH 客户端连接到实例
  1. (可选)生成新的 SSH 私有密钥和公有密钥

    您可以使用以下命令生成新的 SSH 私有密钥和公有密钥(my_keymy_key.pub):

    $ ssh-keygen -t rsa -f my_key
  2. 将 SSH 公有密钥推送到实例

    使用 send-ssh-public-key 命令可将 SSH 公有密钥推送到实例。如果使用 AL2023 或 Amazon Linux 2 启动实例,则 AMI 的默认用户名为 ec2-user。如果使用 Ubuntu 启动实例,则 AMI 的默认用户名为 ubuntu

    以下示例将公有密钥推送到指定的可用区中的指定实例,以对 ec2-user 进行身份验证。

    $ aws ec2-instance-connect send-ssh-public-key \ --region us-west-2 \ --availability-zone us-west-2b \ --instance-id i-001234a4bf70dec41EXAMPLE \ --instance-os-user ec2-user \ --ssh-public-key file://my_key.pub
  3. 使用私有密钥连接到实例

    从实例元数据中删除公有密钥之前,可以使用 ssh 命令通过私有密钥连接到实例(在 60 秒后删除)。指定与公有密钥对应的私有密钥、用于启动实例的 AMI 的默认用户名以及实例的公有 DNS 名称(如果通过私有网络连接,请指定私有 DNS 名称或 IP 地址)。添加 IdentitiesOnly=yes 选项以确保仅使用 ssh config 中的文件和指定的密钥进行连接。

    $ ssh -o "IdentitiesOnly=yes" -i my_key ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

使用 AWS CLI进行连接

如果知道实例 ID,则可以使用 ec2-instance-connect AWS CLI 命令通过 SSH 客户端连接到实例。如果您未指定连接类型,EC2 Instance Connect 会自动尝试连接到实例的公有 IPv4 地址。如果您的实例没有公有 IPv4 地址,则 EC2 Instance Connect 会尝试通过 EC2 Instance Connect Endpoint 连接到实例的私有 IPv4 地址。如果您的实例没有私有 IPv4 地址或者您的 VPC 没有 EC2 Instance Connect Endpoint,则 EC2 Instance Connect 会尝试连接到实例的 IPv6 地址。

重要

在连接此方法之前,请确保您已配置 AWS CLI,包括它使用的凭证,并确保使用的是最新版本的 AWS CLI。有关更多信息,请参阅 AWS Command Line Interface 用户指南中的安装或更新最新版本的 AWS CLI配置 AWS CLI

连接类型
auto(默认值)

CLI 尝试按以下顺序使用实例的 IP 地址并使用相应的连接类型进行连接:

  • 公有 IPv4:direct

  • 私有 IPv4:eice

  • IPv6:direct

direct

CLI 尝试按以下顺序使用实例的 IP 地址进行连接(它不通过 EC2 Instance Connect Endpoint 进行连接):

  • 公有 IPv4

  • IPv6

  • 私有 IPv4

eice

CLI 始终使用实例的私有 IPv4 地址。

注意

将来,我们可能会更改 auto 连接类型的行为。为确保使用所需的连接类型,我们建议您将 --connection-type 明确设置为 directeice

在使用 EC2 Instance Connect 连接到实例时,EC2 Instance Connect API 会将一个 SSH 公有密钥推送到实例元数据并在其中保留 60 秒。附加到用户的 IAM policy 会授权用户将公有密钥推送到实例元数据。

要使用实例 ID 连接到实例

如果只知道实例 ID,并想让 EC2 Instance Connect 确定连接到实例时要使用的连接类型,请使用 ec2-instance-connect CLI 命令,并指定 ssh 参数和实例 ID。

aws ec2-instance-connect ssh --instance-id i-1234567890example
提示

如果使用此命令时出现错误,请确保使用的是 AWS CLI 版本 2。ssh 参数仅适用于 AWS CLI 版本 2。有关更多信息,请参阅《AWS Command Line Interface 开发人员指南》中的关于 AWS CLI 版本 2

要使用实例 ID 和 EC2 Instance Connect Endpoint 连接到实例

如果您想通过 EC2 Instance Connect Endpoint 连接到您的实例,请使用前面的命令并通过 eice 值指定 --connection-type 参数。

aws ec2-instance-connect ssh --instance-id i-1234567890example --connection-type eice
要使用实例 ID 和您自己的私有密钥文件连接到实例

如果您想使用自己的私有密钥通过 EC2 Instance Connect Endpoint 连接到您的实例,请指定实例 ID 和私有密钥文件的路径。不要在路径中包含 file://;以下示例将会失败:file:///path/to/key

aws ec2-instance-connect ssh --instance-id i-1234567890example --private-key-file /path/to/key.pem

故障排除

如果您在尝试连接到实例时遇到错误,请参阅下文: