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

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

步骤 3:在混合和多云环境中安装SSM Agent (Linux)

本主题介绍如何在混合和多云环境中的非 EC2(亚马逊弹性计算云)Linux 计算机Amazon Systems ManagerSSM Agent上安装。如果您计划在混合和多云环境中使用计算Windows Server机,请上一个步骤:步骤 4:SSM Agent为混合和多云环境安装 () Windows

重要

此过程是混合和多云环境的 EC2 实例以外的机器类型。要在适用于 Linux 的 EC2 实例上下载并安装 SSM Agent,请参阅 在适用于 Linux 的 EC2 实例上使用 SSM Agent

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

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

例如,要从美国东部(俄亥俄州)区域(us-east-2)下载适用于 Amazon Linux、RHEL、CentOS 和 SLES 64 位的 SSM Agent,请使用以下 URL:

SSM Agent在混合和多云环境中的非 EC2 计算机上安装
  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 对应美国东部(俄亥俄)区域。有关支持的区域值的列表,请参阅中的 S ystems Manager 服务端点中的 “区域” 列Amazon Web Services 一般参考

mkdir /tmp/ssm curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/3.0.1479.0/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 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 实例有区别。

继续浏览 步骤 4: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 的其他功能。有关可用Config 属性及其默认值的up-to-date列表,请参阅配置属性定义

取消注册及重新注册托管节点

您可以通过从Amazon CLI或 Tools for Windows 调用 DeregisterManagedInstanceAPI 操作来取消注册混合激活的托管节点PowerShell。以下是一个示例 CLI 命令:

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

您可以在取消注册计算机后重新注册计算机。请使用以下过程来重新注册计算机。完成这些步骤后,您的托管节点将再次在托管节点列表中显示。

在非 EC2 Linux 计算机上重新注册托管节点
  1. Connect 您的机器。

  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

对非 EC2 Linux 计算机上的SSM Agent安装进行故障排除

可以使用以下信息来帮助您解决在混合和多云环境中安装SSM Agent在混合激活的 Linux 计算机上出现的问题。

收到DeliveryTimedOut错误

问题:将一个Amazon Web Services 账户中的托管节点配置为单独的的托管节点时Amazon Web Services 账户,运行DeliveryTimedOut在目标计算机SSM Agent上安装的命令后,您收到。

解决方案:在此场景中,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