在 Ubuntu Server 实例上手动安装 SSM 代理 - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

在 Ubuntu Server 实例上手动安装 SSM 代理

连接到您的 Ubuntu Server 实例并执行下列过程之一中的步骤,在每个将使用 SSM 代理 运行命令的实例上安装 Systems Manager。

关于 64 位 Ubuntu Server 16.04 实例上的 SSM 代理安装

从从使用 Ubuntu Server 标识的 AMIs 16.04 20180627 创建的实例开始,已使用 Snap 软件包预安装 SSM 代理。例如:ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20180627。 在从之前的 AMIs 创建的实例上,您应继续使用 deb 安装程序包。

对于从 64 位 Ubuntu Server 16.04 AMI 创建的实例,请确保遵循 SSM 代理 安装类型的正确过程:

重要

请注意,如果一个实例具有多个 SSM 代理 安装(例如,一个使用 Snap 安装,一个使用 deb 安装程序安装),则您的代理操作将无法正常工作。

您可以使用以下任一方法验证实例的源 AMI ID 创建日期。请注意,这些过程仅适用于 AWS 托管的 AMIs。

验证源 AMI ID 创建日期(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在左侧导航窗格中,选择 Instances (实例)

  3. 选择一个实例。

  4. Description (描述) 选项卡上,检查 YYYYMMDDAMI ID 字段中值的 标识符。例如:ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20180627

验证源 AMI ID 创建日期 (AWS CLI)

  • 运行以下命令。

    aws ec2 describe-images --image-id ami-id

    ami-id 表示 AMI 提供的 AWS的 ID,例如 ami-07c8bc5c1ce9598c3

    如果成功,该命令将返回类似于以下内容的信息,您可以在其中检查 CreationDateName 字段以查找信息。

    {
        "Images": [
            {
                "Architecture": "x86_64",
                "CreationDate": "2020-07-24T20:40:27.000Z",
                "ImageId": "ami-07c8bc5c1ce9598c3",
    -- truncated --
                "ImageOwnerAlias": "amazon",
                "Name": "amzn2-ami-hvm-2.0.20200722.0-x86_64-gp2",
                "RootDeviceName": "/dev/xvda",
                "RootDeviceType": "ebs",
                "SriovNetSupport": "simple",
                "VirtualizationType": "hvm"
            }
        ]
    }

在 Ubuntu Server 实例上安装 SSM 代理

Ubuntu Server 20.10 STR & 20.04, 18.04, and 16.04 LTS 64-bit (Snap)

在 SSM 代理 20.10 STR & 20.04、18.04 和 16.04 LTS 64 位实例(带 Snap 软件包)上安装Ubuntu Server

  1. 默认情况下,SSM 代理安装在 Ubuntu Server 20.04、18.04 和 16.04 LTS 64 位 AMIs 上,标识符为 20180627 或更高版本。

    如果您需要在本地服务器上安装 SSM 代理或者需要重新安装代理,您可以使用以下脚本。您无需为下载指定 URL,因为 snap 命令会自动从 Snap 应用商店 https://snapcraft.io 下载代理。

    sudo snap install amazon-ssm-agent --classic
    重要

    Snap 存储中的 candidate 通道包含最新版本的 SSM 代理,不包含稳定的通道。如果要在候选项通道上跟踪 SSM 代理 版本信息,请在 Ubuntu Server 20.10 STR & 20.04、18.04 和 16.04 LTS 64 位实例上运行以下命令。

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

    请注意 SSM 代理 20.10 STR & 20.04、18.04 和 16.04 LTS 上的 Ubuntu Server的以下详细信息:

    • 由于 Snap 的已知问题,使用 snap 命令时您可能会看到 Maximum timeout exceeded 错误。如果您收到此错误,请运行以下命令(一次运行一条命令)来启动代理、停止它并检查其状态:

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

    • 在 Ubuntu Server 20.10 STR & 20.04 和 18.04 LTS 上,我们建议您仅使用 Snaps。另外请确保实例上只安装并运行了代理的一个实例。如果要使用不带 Snap 的 SSM 代理,请卸载 SSM 代理。然后,将 SSM 代理 安装为 debian 软件包,并确保您没有安装与要作为 debian 软件包管理的软件包列表重叠的任何 Snap。

    • 在 Ubuntu Server 20.10 STR & 20.04、18.04 和 16.04 LTS 上,SSM 代理 提供对 arm64 处理器架构的支持。

    • 在 Ubuntu Server 16.04 上,使用 Snap 或 deb 安装软件包安装 SSM 代理,具体取决于 16.04 AMI 的版本。

  2. 运行以下命令确定 SSM 代理是否在运行。

    sudo snap list amazon-ssm-agent
  3. 如果上一条命令返回 amazon-ssm-agent is stoppedinactivedisabled,则运行以下命令将启动服务。

    sudo snap start amazon-ssm-agent
  4. 检查代理的状态。

    sudo snap services amazon-ssm-agent
Ubuntu Server 16.04 and 14.04 64-bit (deb)

在 Ubuntu Server 16.04 和 14.04 64 位实例(带 deb 安装程序包)上安装 SSM 代理

  1. 如果您需要在本地服务器上安装 SSM 代理或者需要重新安装代理,您可以使用以下脚本。

    重要

    默认情况下,SSM 代理安装在从 Ubuntu Server 16.04 LTS 64 位 AMIs(带标识符 20180627)或更高版本中创建的实例上。使用早期标识符从 AMIs 创建的实例(例如,20171121.120180522)应继续使用 deb 安装程序。

    如果 SSM 代理与 Snap 一起安装到实例上,并且使用 deb 安装程序软件包安装或更新 SSM 代理,则安装或 SSM 代理操作可能失败。

    在实例上创建临时目录。

    mkdir /tmp/ssm

    更改为临时目录。

    cd /tmp/ssm

    运行以下命令。

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

    wget https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/debian_amd64/amazon-ssm-agent.deb
    sudo dpkg -i amazon-ssm-agent.deb
  2. 运行以下命令之一以确定 SSM 代理是否在运行。

    Ubuntu Server 16.04:

    sudo systemctl status amazon-ssm-agent

    Ubuntu Server 14.04:

    sudo status amazon-ssm-agent
  3. 如果上一条命令返回 amazon-ssm-agent is stoppedinactivedisabled,则运行以下命令之一将启动服务。

    Ubuntu Server 16.04:

    sudo systemctl enable amazon-ssm-agent

    Ubuntu Server 14.04:

    sudo start amazon-ssm-agent
  4. 运行以下命令之一以检查代理状态。

    Ubuntu Server 16.04:

    sudo systemctl status amazon-ssm-agent

    Ubuntu Server 14.04:

    sudo status amazon-ssm-agent
Ubuntu Server 16.04 and 14.04 32-bit

在 Ubuntu Server 16.04 和 14.04 32 位实例上安装 SSM 代理

  1. 在实例上创建临时目录。

    mkdir /tmp/ssm

    更改为临时目录。

    cd /tmp/ssm

    运行以下命令。

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

    wget https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/debian_386/amazon-ssm-agent.deb
    sudo dpkg -i amazon-ssm-agent.deb
  2. 运行以下命令确定 SSM 代理是否在运行:

    sudo status amazon-ssm-agent
  3. 如果上一条命令返回 amazon-ssm-agent is stoppedinactivedisabled,则运行以下命令。

    1. 启动代理:

      sudo start amazon-ssm-agent
    2. 检查代理的状态:

      sudo status amazon-ssm-agent
注意

如果您无法从指定的区域下载代理,请使用以下全局 URL 之一。请注意,即使以下 URL 显示“ec2-downloads-windows”,这些也是 Linux 操作系统的正确 URL。

  • Intel 64-bit (x86_64)

    https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/linux_amd64/amazon-ssm-agent.rpm
  • Intel 32-bit (x86)

    https://s3.cn-north-1.amazonaws.com.cn/amazon-ssm-cn-north-1/latest/linux_386/amazon-ssm-agent.rpm
重要

SSM 代理 的更新版本在有新功能添加到 Systems Manager 或者对现有功能进行了更新时发布。如果较早版本的代理运行在实例上,一些 SSM 代理 过程会失败。因此,我们建议您自动完成确保实例上的 SSM 代理 为最新的过程。有关信息,请参阅 自动执行对 SSM 代理 的更新。要获得有关 SSM 代理 更新的通知,请在 GitHub 上订阅 SSM 代理 发行说明页面。