使用 EC2 Instance Connect 进行连接 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 EC2 Instance Connect 进行连接

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

如果您在尝试连接到实例时收到错误,请参阅以 排查实例的连接问题。 以及如何排查使用 EC2 Instance Connect 连接我的 EC2 实例时遇到的问题?

Limitations

  • 支持以下 Linux 发行版:

    • Amazon Linux 2(任何版本)

    • Ubuntu 16.04 或更高版本

  • 要使用 Amazon EC2 控制台(基于浏览器的客户端)进行连接,实例必须具有公有 IPv4 地址。

  • 如果实例没有公有 IP 地址,则可以使用 SSH 客户端或 EC2 Instance Connect CLI 连接到实例,也可以通过私有网络连接到实例,例如从同一 VPC 内的计算机或连接到 VPC 的计算机上通过 VPN 或 Amazon Direct Connect 连接到 VPC 的计算机连接到实例。

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

Prerequisites

  • 在实例上安装 Instance Connect。

    有关更多信息,请参阅设置 EC2 Instance Connect

  • (可选)在本地计算机上安装 SSH 客户端。

    如果用户仅使用 Amazon EC2 控制台(基于浏览器的客户端)或 EC2 Instance Connect 连接到实例,则无需安装 SSH 客户端。您的本地计算机很可能已默认安装 SSH 客户端。您可以通过在命令行键入 ssh 来检查 SSH 客户端。如果您的本地计算机无法识别该命令,您可安装 SSH 客户端。有关在 Linux 或 macOS X 上安装 SSH 客户端的信息,请参阅 http://www.openssh.com。有关在 Windows 10 上安装 SSH 客户端的信息,请参阅 Windows 中的 OpenSSH

  • (可选)在本地计算机上安装 EC2 Instance Connect CLI。

    如果用户仅使用 Amazon EC2 控制台(基于浏览器的客户端)或 SSH 客户端连接到实例,则无需安装 EC2 Instance Connect CLI。有关更多信息,请参阅任务 3:(可选)安装 EC2 Instance Connect CLI。此连接方法适用于具有公有 IP 地址的实例。

使用 EC2 Instance Connect 进行连接

使用 Amazon EC2 控制台(基于浏览器的客户端)进行连接

您可以通过从 Amazon EC2 控制台中选择实例,然后选择使用 EC2 Instance Connect 进行连接,以使用基于浏览器的客户端连接到实例。Instance Connect 处理权限并提供成功的连接。

从 Amazon EC2 控制台使用基于浏览器的客户端连接到您的实例

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

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

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

  4. 选择 EC2 Instance Connect

  5. 验证用户名并选择连接以打开终端窗口。

使用 EC2 Instance Connect CLI 进行连接

您可以使用 EC2 Instance Connect CLI 并仅提供实例 ID 以连接到实例,同时 Instance Connect CLI 在一次调用中执行以下三个操作:它生成一次性使用的 SSH 公有密钥,将密钥推送到实例以在其中保留 60 秒,并将用户连接到实例。您可以在 Instance Connect CLI 中使用基本 SSH/SFTP 命令。

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

注意

-i使用 时不支持 mssh。在使用 mssh 命令连接到实例时,无需指定任何类型的身份文件,因为 Instance Connect 会管理密钥对。

Amazon Linux 2

使用 EC2 Instance Connect CLI 连接到实例

mssh 命令与实例 ID 一起使用,如下所示。您无需指定 AMI 的用户名。

$ mssh i-001234a4bf70dec41EXAMPLE
Ubuntu

使用 EC2 Instance Connect CLI 连接到实例

mssh 命令与实例 ID 以及 Ubuntu AMI 的默认用户名一起使用,如下所示。您必须指定 AMI 的用户名,否则会出现以下错误:身份验证失败

$ mssh ubuntu@i-001234a4bf70dec41EXAMPLE

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

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

Requirements

  • 支持的 RSA 密钥类型是 OpenSSH 和 SSH2。支持的长度为 2048 和 4096。有关更多信息,请参阅选项 2:将您自己的公有密钥导入到 Amazon EC2

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

使用您自己的密钥和任何 SSH 客户端连接到实例

  1. (可选)生成新的 SSH 私有密钥和公有密钥

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

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

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

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

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

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

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