为什么我无法在 Amazon EC2 Linux 实例上安装 SSM Agent?

2 分钟阅读
0

当我尝试在 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例上安装 AWS Systems Manager Agent(SSM Agent)时,安装失败。

简述

大多数 AWS 提供的亚马逊机器映像(AMI)上都预装了 SSM Agent:

  • Amazon Linux
  • Amazon Linux 2
  • Amazon Elastic Container Service(Amazon ECS)优化后的 Amazon Linux 2 基础 AMI
  • Ubuntu Server 16.04、18.04 和 20.04

但是,要管理基于 RedHat、SUSE 或 CentOS AMI 的实例,您必须手动安装 SSM Agent。

解决方案

要故障排除 SSM Agent 安装失败问题,请检查以下常见问题:

不支持的操作系统版本

并不是所有操作系统(OS)版本都能使用 SSM Agent。如果您运行的操作系统版本不受支持,则 SSM Agent 安装将失败。要确认 SSM Agent 是否适用于您的操作系统,请参阅 Systems Manager 支持的操作系统

程序包下载失败

当您手动安装 SSM Agent 时,系统会从 Amazon Simple Storage Service(Amazon S3)存储库下载和安装 SSM Agent 程序包。如果实例无法连接到 S3 桶来下载程序包,则 SSM Agent 安装将失败。

验证您的 Amazon EC2 实例是否有权访问 S3 存储库以下载 SSM Agent 程序包:

  • 如果您的实例位于带有网络地址转换(NAT)网关的私有子网中,则请参阅 NAT 网关
  • 如果您的实例位于带有 NAT 实例的私有子网中,则请参阅 NAT 实例
  • 如果您的实例位于带有互联网网关的公共子网中,则请参阅激活互联网接入
  • 如果您的实例位于带有 Amazon S3 虚拟私有云(VPC)端点的私有或公共子网中,则请参阅 适用于 Amazon S3 的网关端点

在以下情况中,程序包下载也可能失败:

  • 操作系统内的 DNS 服务器无法解析 Amazon S3 端点 URL。
  • 您停用了 VPC 的 DNS 解析。

要验证 /etc/resolv.conf 文件是否包含您的 DNS 服务器的正确 IP 地址,请运行以下命令。然后,查看输出并确认nameserver IP 地址与您的 DNS 服务器的 IP 地址相匹配:

$ cat /etc/resolv.conf

有关更多信息,请参阅如何排查我的网关 Amazon VPC 端点的连接问题?

缺少 SSM Agent 程序包的公有密钥

SSM Agent 程序包文件具有加密签名。要确保 SSM Agent 程序包未被纂改,请使用公有密钥来验证安装程序包的签名。您可以使用 RPM Package Manager(RPM)或 GNU Privacy Guard(GPG)。RPM 包已经包含 RPM 验证所需的签名。如果您使用 GPG 来验证安装程序包,则必须手动导入公有密钥。否则,安装将失败并出现以下错误:

"Public key for amazon-ssm-agent.rpm is not installed"

有关更多信息,请参阅验证 SSM Agent签名

交易测试错误

使用 RPM 安装 SSM Agent 时,运行以下命令将公共密钥导入密钥环:

rpm --import amazon-ssm-agent.gpg

运行此命令并尝试安装 SSM Agent 后,您可能会看到以下错误:

"Transaction test error: package amazon-ssm-agent-VERSION_NO does not verify: Header V4 RSA/SHA1 Signature"

此错误可能会发生在使用已过时的 SHA1 算法的 RHEL Linux 8.x 和 9.x 实例中。要解决此问题,请按照以下步骤操作:

  1. 使用 GPG 手动导入公共密钥:

    gpg --import amazon-ssm-agent.gpg
  2. 验证 SSM Agent 的签名,然后安装 SSM Agent。

AWS 官方
AWS 官方已更新 6 个月前