

• AWS Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# 在混合 Linux 节点上安装 SSM Agent
<a name="hybrid-multicloud-ssm-agent-install-linux"></a>

本主题介绍如何在[混合和多云](operating-systems-and-machine-types.md#supported-machine-types)环境中的非 EC2（Amazon Elastic Compute Cloud）Linux 计算机上安装 AWS Systems Manager SSM Agent。有关在适用于 Linux 的 EC2 实例上安装 SSM Agent 的信息，请参阅[在适用于 Linux 的 EC2 实例上手动安装和卸载 SSM Agent](manually-install-ssm-agent-linux.md)。

开始之前，请找到在混合激活过程中生成的激活码和激活 ID，如 [创建混合激活以将节点注册到 Systems Manager](hybrid-activation-managed-nodes.md) 中所述。按照以下流程指定激活代码和 ID。

**在混合和多云环境中的非 EC2 计算机上安装 SSM Agent**

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

1. 如果使用 HTTP 或 HTTPS 代理，则必须在当前 Shell 会话中设置 `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
   ```

1. 将以下命令块之一复制并粘贴到 SSH 中。将占位符的值替换为在混合激活过程中生成的激活码和激活 ID，以及要从中下载 SSM Agent 的 AWS 区域标识符，然后按 `Enter`。
**重要**  
请注意以下重要详细信息：  
`ssm-setup-cli` 用于非 EC2 安装可最大程度提高 Systems Manager 安装和配置的安全性。
如果您不是根用户，则 `sudo` 不是必需的。
从创建混合激活时所在的相同 AWS 区域 下载 `ssm-setup-cli`。
`ssm-setup-cli` 支持 `manifest-url` 选项，该选项可用来确定代理的下载来源。除非您的组织要求，否则请勿为此选项指定任何值。
注册实例时，请仅使用为 `ssm-setup-cli` 提供的下载链接。`ssm-setup-cli` 不应另行存放以供将来使用。
您可以使用[此处](https://github.com/aws/amazon-ssm-agent/blob/mainline/Tools/src/setupcli_data_integrity_linux.sh)提供的脚本来验证 `ssm-setup-cli` 的签名。

   *region* 表示 AWS Systems Manager 支持的 AWS 区域 的标识符，例如 `us-east-2` 对应美国东部（俄亥俄州）区域。有关支持的 *region* 值的列表，请参阅*《Amazon Web Services 一般参考》*中的 [Systems Manager service endpoints](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) 的 **Region** 列。

   此外，`ssm-setup-cli` 包括以下选项：
   + `version` –有效值为 `latest` 和 `stable`。
   + `downgrade` – 允许将 SSM Agent 降级为早期版本。指定 `true` 安装早期版本的代理。
   + `skip-signature-validation` – 在下载和安装代理期间跳过签名验证。

## Amazon Linux 2、RHEL 7.x 和 Oracle Linux
<a name="cent-7"></a>

```
mkdir /tmp/ssm
curl https://amazon-ssm-region.s3.region.amazonaws.com/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"
```

## RHEL 8.x
<a name="cent-8"></a>

```
mkdir /tmp/ssm
curl https://amazon-ssm-region.s3.region.amazonaws.com/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"
```

## Debian Server
<a name="deb"></a>

```
mkdir /tmp/ssm
curl https://amazon-ssm-region.s3.region.amazonaws.com/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"
```

## Ubuntu Server
<a name="ubu"></a>
+ **使用 .deb 包**

  ```
  mkdir /tmp/ssm
  curl https://amazon-ssm-region.s3.region.amazonaws.com/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/amazon-ssm-agent) [https://snapcraft.io](https://snapcraft.io) 下载代理。

  在 Ubuntu Server 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 Server 节点上安装 SSM Agent](hybrid-multicloud-ssm-agent-install-windows.md)。

## 设置私有密钥自动轮换
<a name="ssm-agent-hybrid-private-key-rotation-linux"></a>

为了加强安全状况，您可以将 AWS Systems Manager 代理（SSM Agent）配置为自动轮换混合和多云环境私有密钥。您可以使用 SSM Agent 版本 3.0.1031.0 或更高版本来访问此功能。使用以下过程开启此功能。

**将 SSM Agent 配置为轮换混合和多云环境私有密钥**

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

1. 将 `amazon-ssm-agent.json.template` 的内容复制到名为 `amazon-ssm-agent.json` 的新文件中。Save`amazon-ssm-agent.json`在同一目录中，其中`amazon-ssm-agent.json.template`位于中。

1. 找到 `Profile`、`KeyAutoRotateDays`。输入您希望自动轮换私有密钥的间隔天数。

1. 重新启动 SSM Agent。

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

您可以按照相同的过程自定义 SSM Agent 的其他功能。有关可用配置属性及其默认值的最新列表，请参阅[配置属性定义](https://github.com/aws/amazon-ssm-agent#config-property-definitions)。

## 取消注册及重新注册托管式节点（Linux）
<a name="systems-manager-install-managed-linux-deregister-reregister"></a>

您可以从 AWS CLI 或借助适用于 Windows PowerShell 的工具来调用 [DeregisterManagedInstance](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DeregisterManagedInstance.html) API 操作，以取消注册混合激活托管节点。以下是一个示例 CLI 命令：

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

要移除代理的其余注册信息，请移除 `amazon-ssm-agent.json` 文件中的 `IdentityConsumptionOrder` 键。然后，根据安装类型运行下列命令之一。

在使用 Snap 软件包安装了 SSM Agent 的 Ubuntu Server 节点上：

```
sudo /snap/amazon-ssm-agent/current/amazon-ssm-agent -register -clear
```

在其余 Linux 安装上：

```
amazon-ssm-agent -register -clear
```

**注意**  
只要未达到指定激活码和 ID 的实例限制，就可以使用相同的激活码和 ID 重新注册本地服务器、边缘设备或虚拟机。您可以使用 AWS CLI 调用 [describe-activations](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-activations.html) API 来验证激活码和 ID 的实例限制。运行命令后，请验证 `RegistrationCount` 的值是否未超过 `RegistrationLimit`。如果超过，则必须使用不同的激活码和 ID。

**在 非 EC2 Linux 计算机上重新注册托管节点**

1. 连接到您的计算机。

1. 运行如下命令。请务必将占位符的值替换为在创建托管节点激活时生成的激活码和激活 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 安装进行故障排除
<a name="systems-manager-install-managed-linux-troubleshooting"></a>

使用以下信息来帮助您解决混合激活 Linux 计算机在[混合和多云](operating-systems-and-machine-types.md#supported-machine-types)环境中安装 SSM Agent 时出现的问题。

### 收到 DeliveryTimedOut 错误
<a name="systems-manager-install-managed-linux-troubleshooting-delivery-timed-out"></a>

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

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

### 无法加载节点关联
<a name="systems-manager-install-managed-linux-troubleshooting-associations"></a>

**问题**：运行安装命令后，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
```