如何在混合 Linux 节点上安装 SSM Agent - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

如何在混合 Linux 节点上安装 SSM Agent

本主题介绍如何在混合和多云环境中的非 EC2(Amazon Elastic Compute Cloud)Linux 计算机上安装 Amazon Systems Manager SSM Agent。如果您计划在混合和多云环境中使用 Windows Server 计算机,请参阅下一步骤:如何在混合 Windows 节点上安装 SSM Agent

重要

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

在开始前,找到之前在 创建混合激活以将节点注册到 Systems Manager 中完成混合激活后收到的激活代码和激活 ID。按照以下流程指定激活代码和 ID。

region 表示 Amazon Systems Manager 支持的 Amazon Web Services 区域 的标识符,例如 us-east-2 对应美国东部(俄亥俄)区域。有关支持的 region 值的列表,请参阅《Amazon Web Services 一般参考》中的 Systems Manager service endpointsRegion 列。

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

在混合和多云环境中的非 EC2 计算机上安装 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 不是必需的。

    • 从创建混合激活时所在的相同 Amazon Web Services 区域 下载 ssm-setup-cli

    • ssm-setup-cli 支持 manifest-url 选项,该选项可用来确定代理的下载来源。除非您的组织要求,否则请勿为此选项指定任何值。

    • 注册实例时,请仅使用为 ssm-setup-cli 提供的下载链接。ssm-setup-cli 不应另行存放以供将来使用。

    • 您可以使用此处提供的脚本来验证 ssm-setup-cli 的签名。

    region 表示 Amazon Systems Manager 支持的 Amazon Web Services 区域 的标识符,例如 us-east-2 对应美国东部(俄亥俄)区域。有关支持的 region 值的列表,请参阅《Amazon Web Services 一般参考》中的 Systems Manager service endpointsRegion 列。

    此外,ssm-setup-cli 包括以下选项:

    • version –有效值为 lateststable

    • downgrade – 允许将 SSM Agent 降级为早期版本。指定 true 安装早期版本的代理。

    • skip-signature-validation – 在下载和安装代理期间跳过签名验证。

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/ssm-setup-cli -o /tmp/ssm/ssm-setup-cli sudo chmod +x /tmp/ssm/ssm-setup-cli sudo /tmp/ssm/ssm-setup-cli -register -code "activation-code" -id "activation-id" -region "region"
mkdir /tmp/ssm curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/linux_amd64/ssm-setup-cli -o /tmp/ssm/ssm-setup-cli sudo chmod +x /tmp/ssm/ssm-setup-cli sudo /tmp/ssm/ssm-setup-cli -register -activation-code "activation-code" -activation-id "activation-id" -region "region"
mkdir /tmp/ssm curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/linux_amd64/ssm-setup-cli -o /tmp/ssm/ssm-setup-cli sudo chmod +x /tmp/ssm/ssm-setup-cli sudo /tmp/ssm/ssm-setup-cli -register -activation-code "activation-code" -activation-id "activation-id" -region "region"
mkdir /tmp/ssm wget https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/debian_amd64/ssm-setup-cli -o /tmp/ssm/ssm-setup-cli sudo chmod +x /tmp/ssm/ssm-setup-cli sudo /tmp/ssm/ssm-setup-cli -register -activation-code "activation-code" -activation-id "activation-id" -region "region"
mkdir /tmp/ssm sudo curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/debian_arm/ssm-setup-cli -o /tmp/ssm/ssm-setup-cli sudo chmod +x /tmp/ssm/ssm-setup-cli sudo /tmp/ssm/ssm-setup-cli -register -activation-code "activation-code" -activation-id "activation-id" -region "region"
  • 使用 .deb 包

    mkdir /tmp/ssm curl https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/debian_amd64/ssm-setup-cli -o /tmp/ssm/ssm-setup-cli sudo chmod +x /tmp/ssm/ssm-setup-cli sudo /tmp/ssm/ssm-setup-cli -register -activation-code "activation-code" -activation-id "activation-id" -region "region"
  • 使用 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 实例有区别。

继续如何在混合 Windows 节点上安装 SSM Agent

设置私有密钥自动轮换

为了加强安全状况,您可以将 Amazon Systems Manager 代理(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 或借助适用于 Windows PowerShell 的工具来调用 DeregisterManagedInstance API 操作,以取消注册混合激活托管节点。以下是一个示例 CLI 命令:

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

要移除代理的其余注册信息,请移除 amazon-ssm-agent.json 文件中的 IdentityConsumptionOrder 键。然后运行以下命令:

amazon-ssm-agent -register -clear

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

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

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

    echo "yes" | sudo /tmp/ssm/ssm-setup-cli -register -activation-code "activation-code" -activation-id "activation-id" -region "region

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

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

收到 DeliveryTimedOut 错误

问题:将一个 Amazon Web Services 账户 中的计算机配置为单独 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