第 5 步:为混合环境安装 SSM 代理 (Linux) - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

第 5 步:为混合环境安装 SSM 代理 (Linux)

本主题介绍如何安装Amazon Web Services Systems Manager混合环境中的 Linux 计算机上的 SSM 代理。如果您计划使用Windows Server计算机处于混合环境中,请参阅下一个步骤。第 6 步:为混合环境安装 SSM 代理 (Windows)

重要

此过程适用于本地或混合环境中的服务器和虚拟机 (VM)。要在适用于 Linux 的 EC2 实例上下载 SSM 代理并将其安装,请参阅在适用于 Linux 的 EC2 实例上安装和配置 SSM 代理

在开始前,找到之前在第 4 步:为混合环境创建托管实例激活中完成托管实例激活后收到的激活代码和激活 ID。按照以下流程指定激活代码和 ID。

区域表示Amazon Web Services 区域支持Amazon Web Services Systems Manager之外的压缩算法(例如us-east-2对于美国东部(俄亥俄)区域,请指定。有关受支持的区域,请参阅区域columnSystems Manager 服务终端节点中的Amazon Web Services 一般参考

例如,要下载适用于亚马逊 Linux 的 SSM 代理程序,RHEL、CentOS 和SLES从美国西部(加利福利亚北部)地区 (us-west-1) 的 64 位,请使用以下 URL:

在混合环境中的服务器和虚拟机上安装 SSM 代理

  1. 登录混合环境中的服务器或虚拟机。

  2. 如果您使用 HTTP 或 HTTPS 代理,则必须将http_proxy或者https_proxy环境变量。如果您不使用代理,可跳过此步骤。

    对于 HTTP 代理服务器,请在命令行处输入以下命令:

    export http_proxy=http://hostname:port export https_proxy=http://hostname:port

    对于 HTTPS 代理服务器,请在命令行处输入以下命令:

    export http_proxy=http://hostname:port export https_proxy=https://hostname:port
  3. 将以下命令块之一复制并粘贴到 SSH 中。将占位符值替换为在创建托管实例激活时生成的激活代码和激活 ID,以及Amazon Web Services 区域您要从中下载 SSM 代理,然后按Enter

    注意

    请注意以下重要详细信息:

    • sudo如果您不是根用户,则不是必需的。

    • 每个命令块都指定sudo -E amazon-ssm-agent。这些区域有:-E仅当您设置 HTTP 或 HTTPS 代理环境变量时才需要。

    区域表示Amazon Web Services 区域支持Amazon Web Services Systems Manager之外的压缩算法(例如us-east-2对于美国东部(俄亥俄)区域,请指定。有关受支持的区域,请参阅区域columnSystems Manager 服务终端节点中的Amazon Web Services 一般参考

mkdir /tmp/ssm curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm sudo stop amazon-ssm-agent sudo -E amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo start amazon-ssm-agent
mkdir /tmp/ssm curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm sudo systemctl stop amazon-ssm-agent sudo -E amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo systemctl start amazon-ssm-agent
mkdir /tmp/ssm curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm sudo dnf install -y /tmp/ssm/amazon-ssm-agent.rpm sudo systemctl stop amazon-ssm-agent sudo -E amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo systemctl start amazon-ssm-agent
mkdir /tmp/ssm wget https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/debian_amd64/amazon-ssm-agent.deb -O /tmp/ssm/amazon-ssm-agent.deb sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb sudo service amazon-ssm-agent stop sudo -E amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo service amazon-ssm-agent start
mkdir /tmp/ssm sudo curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/debian_arm/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb sudo service amazon-ssm-agent stop sudo -E amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo service amazon-ssm-agent start
mkdir /tmp/ssm sudo wget https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/linux_amd64/amazon-ssm-agent.rpm sudo rpm --install amazon-ssm-agent.rpm sudo systemctl stop amazon-ssm-agent sudo -E amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo systemctl enable amazon-ssm-agent sudo systemctl start amazon-ssm-agent
  • 使用 .deb 包

    mkdir /tmp/ssm curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/debian_amd64/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb sudo service amazon-ssm-agent stop sudo -E amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo service amazon-ssm-agent start
  • 使用 Snap 包

    您无需为下载指定 URL,因为 snap 命令会自动从 Snap 应用商店 https://snapcraft.io 下载代理。

    sudo snap install amazon-ssm-agent --classic sudo systemctl stop snap.amazon-ssm-agent.amazon-ssm-agent.service sudo /snap/amazon-ssm-agent/current/amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service
    重要

    这些区域有:候选项通道包含最新版本的 SSM 代理;而不是稳定通道。如果要在候选通道上跟踪 SSM 代理版本信息,请在 Ubuntu 服务器 18.04 和 16.04 LTS 64 位实例上运行以下命令。

    sudo snap switch --channel=candidate amazon-ssm-agent

此命令将下载 SSM 代理并将它安装到混合环境中的服务器或虚拟机上。此命令停止 SSM 代理,然后向 Systems Manager 服务注册服务器或虚拟机。服务器或虚拟机现在为托管实例。为 Systems Manager 配置的 Amazon EC2 实例也是托管实例。但在 Systems Manager 控制台中,您的本地实例与具有前缀 “mi-” 的 Amazon EC2 实例有别。

继续浏览第 6 步:为混合环境安装 SSM 代理 (Windows)

取消注册并重新注册托管实例

您可以通过调用DeregisterManagedInstanceAPI 操作来自AmazonCLI 或适用于 Windows PowerShell 的工具。以下是一个示例 CLI 命令:

aws ssm deregister-managed-instance --instance-id "mi-1234567890"

您可以在取消注册托管实例后重新注册该实例。请使用以下过程重新注册托管实例。完成该过程后,托管实例将重新出现在托管实例列表中。

在 Linux 混合计算机上重新注册托管实例

  1. 连接到您的实例。

  2. 搜索并运行amazon-ssm-agent

  3. 选择卸载 SSM 代理的选项。

  4. 重复本主题中的过程以安装 SSM 代理。

在 Linux 混合环境中安装 SSM 代理的故障排除

使用以下信息可帮助您排除在 Linux 混合环境中安装 SSM 代理的问题。

您收到配送超时错误

问题:在同一个 Amazon EC2 实例配置Amazon Web Services 账户作为单独的托管实例Amazon Web Services 账户,您会收到DeliveryTimedOut在运行命令在目标实例上安装 SSM 代理。

解决方案DeliveryTimedOut是此场景的预期响应代码。在目标实例上安装 SSM 代理的命令会更改源实例的实例 ID。由于实例 ID 已更改,因此源实例无法回复命令在执行时失败、已完成或超时的目标实例。

无法加载实例关联

问题:运行安装命令后,您将看到 SSM 代理错误日志中的以下错误:

Unable to load instance associations, unable to retrieve associations unable to retrieve associations error occurred in RequestManagedInstanceRoleToken: MachineFingerprintDoesNotMatch: Fingerprint does not match

如果计算机 ID 在重启后保持不变,您将看到此错误。

解决方案:要解决此问题,请运行以下命令。此命令强制计算机 ID 在重启后保持不变。

umount /etc/machine-id systemd-machine-id-setup