在您的 EC2 实例上安装 EC2 Instance Connect - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在您的 EC2 实例上安装 EC2 Instance Connect

要使用 EC2 Instance Connect 连接到实例,该实例必须安装 EC2 Instance Connect。

以下 AMI 预安装了 EC2 Instance Connect:

  • AL2023

  • Amazon Linux 2 2.0.20190618 或更高版本

  • macOS Sonoma 14.2.1 或更高版本

  • macOS Ventura 13.6.3 或更高版本

  • macOS Monterey 12.7.2 或更高版本

  • Ubuntu 20.04 或更高版本

如果您的实例是使用前面的列表中的一个 AMI 启动的,可以跳过此过程。

注意

如果为 SSH 身份验证配置了 AuthorizedKeysCommandAuthorizedKeysCommandUser 设置,则 EC2 Instance Connect 安装不会更新它们。因此,无法使用 EC2 Instance Connect。

安装 EC2 Instance Connect 的先决条件
  • 使用以下支持的 AMI 之一启动实例:

    版本 2.0.20190618 之前的 Amazon Linux 2

    CentOS Stream 8 和 9

    Red Hat Enterprise Linux(RHEL)8 和 9

    Ubuntu 16.04 和 18.04

    如果是用较高版本的 Amazon Linux 2、macOS Sonoma、Ventura 或 Monterey,或 Ubuntu 启动实例,则该实例已预安装 EC2 Instance Connect,您可以跳过此过程。

  • 验证 EC2 Instance Connect 的一般先决条件。

    有关更多信息,请参阅 先决条件

  • 确认满足使用本地计算机上的 SSH 客户端连接到实例的先决条件。

    如果您的本地计算机是 Linux 或 macOS,请参阅使用 SSH 从 Linux 或 macOS 连接到 Linux 实例。如果您的本地计算机是 Windows,请参阅 先决条件

    有关更多信息,请参阅 SSH 连接先决条件

  • 获取实例 ID。

    您可以使用 Amazon EC2 控制台获取实例 ID(从 Instance ID (实例 ID) 列)。如果您愿意,可以使用 describe-instances (Amazon CLI) 或 Get-EC2Instance (Amazon Tools for Windows PowerShell) 命令。

  • 在您的本地计算机上安装 SSH 客户端。

    您的本地计算机很可能已默认安装 SSH 客户端。您可以通过在命令行键入 ssh 来检查 SSH 客户端。如果您的本地计算机无法识别该命令,您可安装 SSH 客户端。有关在 Linux 或 macOS X 上安装 SSH 客户端的信息,请参阅 http://www.openssh.com。有关在 Windows 10 上安装 SSH 客户端的信息,请参阅 Windows 中的 OpenSSH

  • [Ubuntu] 在实例上安装 Amazon CLI。

    要在 Ubuntu 实例上安装 EC2 Instance Connect,您必须在实例上使用 Amazon CLI。有关安装 Amazon CLI 的信息,请参阅《Amazon Command Line Interface 用户指南》中的安装 Amazon CLI

安装 EC2 Instance Connect

安装 EC2 Instance Connect 将在实例上配置 SSH 进程守护程序。

根据实例的操作系统,使用以下过程之一安装 EC2 Instance Connect。

Amazon Linux 2
在使用 Amazon Linux 2 启动的实例上安装 EC2 Instance Connect
  1. 使用 SSH 连接到您的实例。

    在以下命令中,将示例值替换为自己的值。可以使用在启动实例时为其分配的 SSH 密钥对以及用于启动实例的 AMI 的默认用户名。对于 Amazon Linux 2,默认用户名是 ec2-user

    $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    有关连接到实例的更多信息,请参阅使用 SSH 从 Linux 或 macOS 连接到 Linux 实例

  2. 在实例上安装 EC2 Instance Connect 程序包。

    [ec2-user ~]$ sudo yum install ec2-instance-connect

    您将会在 /opt/aws/bin/ 文件夹中看到三个新脚本:

    eic_curl_authorized_keys eic_parse_authorized_keys eic_run_authorized_keys
  3. (可选)验证是否在实例上成功安装了 EC2 Instance Connect。

    [ec2-user ~]$ sudo less /etc/ssh/sshd_config

    如果 AuthorizedKeysCommandAuthorizedKeysCommandUser 行包含以下值,则成功安装 EC2 Instance Connect:

    AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f AuthorizedKeysCommandUser ec2-instance-connect
    • AuthorizedKeysCommand 设置 eic_run_authorized_keys 文件以从实例元数据中查找密钥

    • AuthorizedKeysCommandUser 将系统用户设置为 ec2-instance-connect

    注意

    如果以前配置了 AuthorizedKeysCommandAuthorizedKeysCommandUser,则 EC2 Instance Connect 安装不会更改这些值,并且无法使用 EC2 Instance Connect。

CentOS
在通过 CentOS 启动的实例上安装 EC2 Instance Connect
  1. 使用 SSH 连接到实例。

    在以下命令中,将示例值替换为自己的值。可以使用在启动实例时为其分配的 SSH 密钥对以及用于启动实例的 AMI 的默认用户名。对于 CentOS,默认用户名是 centosec2-user

    $ ssh -i my_ec2_private_key.pem centos@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    有关连接到实例的更多信息,请参阅使用 SSH 从 Linux 或 macOS 连接到 Linux 实例

  2. 如果使用 HTTP 或 HTTPS 代理,则必须在当前 Shell 会话中设置 http_proxyhttps_proxy 环境变量。

    如果不使用代理,则可跳过此步骤。

    • 对于 HTTP 代理服务器,请运行以下命令:

      $ export http_proxy=http://hostname:port $ export https_proxy=http://hostname:port
    • 对于 HTTPS 代理服务器,请运行以下命令:

      $ export http_proxy=https://hostname:port $ export https_proxy=https://hostname:port
  3. 运行以下命令,在实例上安装 EC2 Instance Connect 软件包。

    适用于 CentOS 的 EC2 Instance Connect 配置文件在 Red Hat Package Manager(RPM)包中提供,适用于 CentOS 8 和 CentOS 9,以及在 Intel/AMD(x86_64)或 ARM(AArch64)上运行的实例类型有不同的 RPM 包。

    使用适用于操作系统和 CPU 架构的命令块。

    • CentOS 8

      Intel/AMD(x86_64)

      [ec2-user ~]$ mkdir /tmp/ec2-instance-connect [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect.rhel8.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm

      ARM(AArch64)

      [ec2-user ~]$ mkdir /tmp/ec2-instance-connect [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect.rhel8.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
    • CentOS 9

      Intel/AMD(x86_64)

      [ec2-user ~]$ mkdir /tmp/ec2-instance-connect [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm

      ARM(AArch64)

      [ec2-user ~]$ mkdir /tmp/ec2-instance-connect [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm

    /opt/aws/bin/ 文件夹中会看到以下新脚本:

    eic_run_authorized_keys
  4. (可选)验证是否在实例上成功安装了 EC2 Instance Connect。

    • 对于 CentOS 8:

      [ec2-user ~]$ sudo less /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf
    • 对于 CentOS 9:

      [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf

    如果 AuthorizedKeysCommandAuthorizedKeysCommandUser 行包含以下值,则成功安装 EC2 Instance Connect:

    AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f AuthorizedKeysCommandUser ec2-instance-connect
    • AuthorizedKeysCommand 设置 eic_run_authorized_keys 文件以从实例元数据中查找密钥

    • AuthorizedKeysCommandUser 将系统用户设置为 ec2-instance-connect

    注意

    如果以前配置了 AuthorizedKeysCommandAuthorizedKeysCommandUser,则 EC2 Instance Connect 安装不会更改这些值,并且无法使用 EC2 Instance Connect。

RHEL
在使用 Red Hat Enterprise Linux(RHEL)启动的实例上安装 EC2 Instance Connect
  1. 使用 SSH 连接到实例。

    在以下命令中,将示例值替换为自己的值。可以使用在启动实例时为其分配的 SSH 密钥对以及用于启动实例的 AMI 的默认用户名。对于 RHEL,默认用户名是 ec2-userroot

    $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    有关连接到实例的更多信息,请参阅使用 SSH 从 Linux 或 macOS 连接到 Linux 实例

  2. 如果使用 HTTP 或 HTTPS 代理,则必须在当前 Shell 会话中设置 http_proxyhttps_proxy 环境变量。

    如果不使用代理,则可跳过此步骤。

    • 对于 HTTP 代理服务器,请运行以下命令:

      $ export http_proxy=http://hostname:port $ export https_proxy=http://hostname:port
    • 对于 HTTPS 代理服务器,请运行以下命令:

      $ export http_proxy=https://hostname:port $ export https_proxy=https://hostname:port
  3. 运行以下命令,在实例上安装 EC2 Instance Connect 软件包。

    在 Red Hat Package Manager(RPM)包中提供适用于 RHEL 的 EC2 Instance Connect 配置文件,适用于 RHEL 8 和 RHEL 9,以及在 Intel/AMD(x86_64)或 ARM(AArch64)上运行的实例类型有不同的 RPM 包。

    使用适用于操作系统和 CPU 架构的命令块。

    • RHEL 8

      Intel/AMD(x86_64)

      [ec2-user ~]$ mkdir /tmp/ec2-instance-connect [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect.rhel8.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm

      ARM(AArch64)

      [ec2-user ~]$ mkdir /tmp/ec2-instance-connect [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect.rhel8.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
    • RHEL 9

      Intel/AMD(x86_64)

      [ec2-user ~]$ mkdir /tmp/ec2-instance-connect [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm

      ARM(AArch64)

      [ec2-user ~]$ mkdir /tmp/ec2-instance-connect [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm

    /opt/aws/bin/ 文件夹中会看到以下新脚本:

    eic_run_authorized_keys
  4. (可选)验证是否在实例上成功安装了 EC2 Instance Connect。

    • 对于 RHEL 8:

      [ec2-user ~]$ sudo less /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf
    • 对于 RHEL 9:

      [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf

    如果 AuthorizedKeysCommandAuthorizedKeysCommandUser 行包含以下值,则成功安装 EC2 Instance Connect:

    AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f AuthorizedKeysCommandUser ec2-instance-connect
    • AuthorizedKeysCommand 设置 eic_run_authorized_keys 文件以从实例元数据中查找密钥

    • AuthorizedKeysCommandUser 将系统用户设置为 ec2-instance-connect

    注意

    如果以前配置了 AuthorizedKeysCommandAuthorizedKeysCommandUser,则 EC2 Instance Connect 安装不会更改这些值,并且无法使用 EC2 Instance Connect。

Ubuntu
在使用 Ubuntu 16.04 或更高版本启动的实例上安装 EC2 Instance Connect
  1. 使用 SSH 连接到实例。

    在以下命令中,将示例值替换为自己的值。可以使用在启动实例时为其分配的 SSH 密钥对以及用于启动实例的 AMI 的默认用户名。对于 Ubuntu AMI,用户名称是 ubuntu

    $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    有关连接到实例的更多信息,请参阅使用 SSH 从 Linux 或 macOS 连接到 Linux 实例

  2. (可选)确保您的实例具有最新 Ubuntu AMI。

    使用以下命令更新实例上的所有程序包。

    ubuntu:~$ sudo apt-get update
    ubuntu:~$ sudo apt-get upgrade
  3. 在实例上安装 EC2 Instance Connect 程序包。

    ubuntu:~$ sudo apt-get install ec2-instance-connect

    您将会在 /usr/share/ec2-instance-connect/ 文件夹中看到三个新脚本:

    eic_curl_authorized_keys eic_parse_authorized_keys eic_run_authorized_keys
  4. (可选)验证是否在实例上成功安装了 Instance Connect。

    ubuntu:~$ sudo less /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf

    如果 AuthorizedKeysCommandAuthorizedKeysCommandUser 行包含以下值,则成功安装 EC2 Instance Connect:

    AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys %%u %%f AuthorizedKeysCommandUser ec2-instance-connect
    • AuthorizedKeysCommand 设置 eic_run_authorized_keys 文件以从实例元数据中查找密钥

    • AuthorizedKeysCommandUser 将系统用户设置为 ec2-instance-connect

    注意

    如果以前配置了 AuthorizedKeysCommandAuthorizedKeysCommandUser,则 EC2 Instance Connect 安装不会更改这些值,并且无法使用 EC2 Instance Connect。

有关 EC2 Instance Connect 程序包的更多信息,请参阅 GitHub 网站上的 aws/aws-ec2-instance-connect-config