在 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 之前,請確定您符合下列先決條件。

  • 確認執行個體使用下列其中一項:

    • Amazon Linux 2 在 2.0.20190618 之前的版本

    • 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、macOS Ventura、macOS Monterey 或 Ubuntu 啟動執行個體,則會預先安裝 EC2 Instance Connect,因此您無需自行安裝。

  • 驗證 EC2 Instance Connect 的一般先決條件。

    如需詳細資訊,請參閱EC2 Instance Connect 的先決條件

  • 確認在本機電腦上使用 SSH 用戶端連線至執行個體的先決條件。

    如需詳細資訊,請參閱使用 SSH 連線至您的 Linux 執行個體

  • 取得執行個體的 ID。

    您可以使用 Amazon EC2 主控台取得執行個體的 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 執行個體 Connect 組態檔案是以 Red Hat Package Manager (RPM) 套件提供,搭配以下項目適用的不同 RPM 套件:CentOS 8 和 CentOS 9,以及在 Intel /AMD (x86_64) 或 ARM (AArch64) 上執行的執行個體類型。

    為您的作業系統和 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 已知的軟體。EC2 Instance Connect 套件透過 macOS 執行個體上的 Homebrew 提供。如需詳細資訊,請參閱 更新 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 套件。

    適用於 RHEL 的 EC2 執行個體 Connect 組態檔案是以 Red Hat Package Manager (RPM) 套件提供,搭配以下項目適用的不同 RPM 套件:RHEL 8 和 RHEL 9,以及在 Intel /AMD (x86_64) 或 ARM (AArch64) 上執行的執行個體類型。

    為您的作業系統和 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。