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

步骤 4:为混合环境安装 SSM Agent (Linux)

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

重要

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

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

region 表示 Amazon Systems Manager 支持的 Amazon Web Services 区域 的标识符,例如美国东部(俄亥俄)区域的 us-east-2。有关受支持的 region 值的列表,请参阅 Amazon Web Services 一般参考中的 Systems Manager 服务终端节点中的 Region(区域)列。

例如,要从美国西部(加利福尼亚北部)区域 (us-west-1) 下载适用于 Amazon Linux、RHEL、CentOS 和 SLES 64 位的 SSM Agent,请使用以下 URL:

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

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

  2. 如果使用 HTTP 或 HTTPS 代理,则必须在当前 Shell 会话中设置 http_proxyhttps_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,以及要从其下载 SSM Agent 的 Amazon Web Services 区域的标识符,然后按 Enter

    注意

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

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

    • 每个命令数据块都指定 sudo -E amazon-ssm-agent。只有在设置 HTTP 或 HTTPS 代理环境变量时才需要 -E

    • 即使以下 URL 显示“ec2-downloads-windows”,对于 Linux 操作系统,这些也是正确的 URL。

    region 表示 Amazon Systems Manager 支持的 Amazon Web Services 区域 的标识符,例如 us-east-2 对应美国东部(俄亥俄)区域。有关受支持的 region 值的列表,请参阅 Amazon Web Services 一般参考中的 Systems Manager 服务终端节点中的 Region(区域)列。

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 下载代理。

    在 Ubuntu Server 20.10 STR & 20.04、 18.04 和 16.04 LTS 上,SSM Agent 安装程序文件(包括代理二进制文件和配置文件)均存储在以下目录中:/snap/amazon-ssm-agent/current/。如果要对此目录中的任何配置文件进行更改,则必须将这些文件从 /snap 目录复制到 /etc/amazon/ssm/ 目录。日志和库文件未更改(/var/lib/amazon/ssm/var/log/amazon/ssm)。

    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
    重要

    Snap Store 中的 candidate 通道包含最新版本的 SSM Agent;而 stable 通道中未包含。如果要跟踪 candidate 通道上的 SSM Agent 版本信息,请在您的 Ubuntu Server 18.04 和 16.04 LTS 64 位实例上运行以下命令。

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

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

继续浏览 第 5 步:为混合环境安装 SSM Agent (Windows)

设置私有密钥自动轮换

为了加强安保状况,您可以将 Amazon Systems Manager Agent (SSM Agent) 配置为自动轮换混合环境私有密钥。您可以使用 SSM Agent 版本 3.0.1031.0 或更高版本来访问此功能。使用以下过程开启此功能。

要将 SSM Agent 配置为轮换混合环境私有密钥,请执行以下步骤:

  1. 在 Linux 计算机上导航到 /etc/amazon/ssm/,或者在 Windows 计算机上导航到 C:\Program Files\Amazon\SSM

  2. amazon-ssm-agent.json.template 的内容复制到名为 amazon-ssm-agent.json 的新文件中。Saveamazon-ssm-agent.json在同一目录中,其中amazon-ssm-agent.json.template位于中。

  3. 找到 ProfileKeyAutoRotateDays。输入您希望自动轮换私有密钥的间隔天数。

  4. 重启 SSM Agent.

每次更改配置时,请重新启动 SSM Agent。

您可以按照相同的过程自定义 SSM Agent 的其他功能。有关可用配置属性及其默认值的最新列表,请参阅配置属性定义

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

您可以通过从 Amazon CLI 或 Tools for Windows PowerShell 调用 DeregisterManagedInstance API 操作来取消注册管理实例。以下是一个示例 CLI 命令:

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

您可以在取消注册托管实例后重新注册该实例。使用以下过程可重新注册托管实例。完成该过程后,您的托管式实例将再次显示在托管式实例列表中。

要在 Linux 混合计算机上重新注册托管实例,请执行以下步骤:

  1. 连接到您的实例。

  2. 运行以下 命令。请确保将占位符值替换为在创建托管实例激活时生成的激活码和激活 ID,以及要从其下载 SSM Agent 的区域的标识符。

    echo "yes" | sudo amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" && sudo systemctl restart amazon-ssm-agent

解决在 Linux 混合环境中安装 SSM Agent 时出现的问题

使用以下信息来帮助您解决在 Linux 混合环境中安装 SSM Agent 时出现的问题。

收到 DeliveryTimedOut 错误

问题:将一个 Amazon Web Services 账户中的 Amazon EC2 实例配置为单独的 Amazon Web Services 账户的管理实例时,运行在目标实例上安装 SSM Agent 的命令后,您收到 DeliveryTimedOut

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

无法加载实例关联

问题:运行安装命令后,SSM Agent 错误日志中显示以下错误:

Unable to load instance associations, unable to retrieve associations unable to retrieve associations error occurred in RequestManagedInstanceRoleToken: MachineFingerprintDoesNotMatch: Fingerprint doesn't match

当计算机 ID 在重启后不存在时,便会显示此错误。

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

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