在您的 EC2 实例上安装 EC2 Instance Connect - Amazon Elastic Compute Cloud

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

要使用 EC2 Instance Connect 连接到 Linux 实例,该实例必须安装 EC2 Instance Connect。安装 EC2 Instance Connect 将在实例上配置 SSH 进程守护程序。

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

注意

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

安装必备组件

安装 EC2 Instance Connect 之前,务必确认已满足以下先决条件。

  • 验证实例使用了以下某一项:

    • 版本 2.0.20190618 之前的 Amazon Linux 2

    • AL2023 AMI 最低版本或经 Amazon ECS 优化的 AMI

    • CentOS Stream 8 和 9

    • 14.2.1 之前的 macOS Sonoma、13.6.3 之前的 Ventura 和 12.7.2 之前的 Monterey

    • Red Hat Enterprise Linux(RHEL)8 和 9

    • Ubuntu 16.04 和 18.04

    提示

    如果使用较高版本的 Amazon Linux、macOS Sonoma、Ventura 或 Monterey 或者 Ubuntu 启动了实例,则该实例已预装 EC2 Instance Connect,因此无需自行安装。

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

    有关更多信息,请参阅 EC2 Instance Connect 的先决条件

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

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

  • 获取实例 ID。

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

手动安装 EC2 Instance Connect

注意

如果使用以下某一项 AMI 启动了实例,则该实例已预安装 EC2 Instance Connect,因此可以跳过此过程:

  • AL2023 标准 AMI

  • Amazon Linux 2 2.0.20190618 或更高版本

  • macOS Sonoma 14.2.1 或更高版本

  • macOS Ventura 13.6.3 或更高版本

  • macOS Monterey 12.7.2 或更高版本

  • Ubuntu 20.04 或更高版本

根据实例的操作系统,使用以下过程之一安装 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 实例

  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 实例

  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。

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

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

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

    有关连接到实例的更多信息,请参阅使用 SSH 客户端连接到 Linux 实例

  2. 使用以下命令更新 Homebrew。更新将列出 Homebrew 了解的软件。通过 Homebrew,在 macOS 实例上提供 EC2 Instance Connect 包。有关更多信息,请参阅 更新 Mac 实例上的操作系统和软件

    [ec2-user ~]$ brew update
  3. 在实例上安装 EC2 Instance Connect 程序包。将安装软件并配置 sshd 以进行使用。

    [ec2-user ~]$ brew install ec2-instance-connect

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

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

    [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 实例

  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 实例

  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. (可选)验证是否在实例上成功安装了 EC2 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。