Amazon EC2 Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

在 Linux 实例上安装和配置 SSM 代理

Amazon EC2 Systems Manager (SSM) 代理负责处理 Systems Manager 请求并按照请求中指定的方式配置计算机。使用以下过程可安装、配置或卸载 SSM 代理。

注意

在 2017.09 及以后日期版本的 Amazon Linux AMI 上,默认情况下会安装 SSM 代理。您必须在其他版本的 Linux 上手动安装 SSM 代理,如本部分中所述。为了实现向后兼容,本部分仍将包括有关在 Amazon Linux 上手动安装代理的信息。

GitHub 上可以找到 SSM 代理的源代码,您可以调整代理以满足您的需求。我们鼓励您针对要包含的更改提交提取请求。但是,AWS 当前不支持运行此软件的修改后副本。

注意

要查看有关不同版本 SSM 代理的详细信息,请参阅发行说明

启动时在 Amazon EC2 Linux 实例上安装 SSM 代理

您可以通过使用 Amazon EC2 用户数据在首次启动实例时安装 SSM 代理。在启动向导的 Configure Instance Details 页面上,展开 Advanced Details,然后复制以下脚本之一并将其粘贴到 User data 字段。例如:

 在启动时安装 SSM 代理

注意

  • 在 Raspbian Jessie 设备上安装 SSM 代理的过程与其他 Linux 版本不同。有关更多信息,请参阅 Raspbian

  • 使用以下脚本中的 URL 可从任意 AWS 区域下载 SSM 代理。如果您要从某特定 区域下载该代理,复制操作系统的 URL,然后将 region 替换为 SSM 可用的区域

    例如,要从美国西部 1 区域下载适用于 Amazon Linux、RHEL、CentOS 和 SLES 64 位的 SSM 代理,请使用以下 URL:

    Copy
    https://s3-us-west-1.amazonaws.com/amazon-ssm-us-west-1/latest/linux_amd64/amazon-ssm-agent.rpm

    如果下载失败,请尝试用 https://s3 替换 https://s3-区域区域.

  • Amazon Linux、RHEL、CentOS 和 SLES 64 位:

    https://s3-区域.amazonaws.com/amazon-ssm-region/latest/linux_amd64/amazon-ssm-agent.rpm

  • Amazon Linux、RHEL 和 CentOS 32 位:

    https://s3-区域.amazonaws.com/amazon-ssm-region/latest/linux_386/amazon-ssm-agent.rpm

  • Ubuntu Server 64 位:

    https://s3-区域.amazonaws.com/amazon-ssm-region/latest/debian_amd64/amazon-ssm-agent.deb

  • Ubuntu Server 32 位:

    https://s3-区域.amazonaws.com/amazon-ssm-region/latest/debian_386/amazon-ssm-agent.deb

  • Raspbian:

    https://s3-region.amazonaws.com/amazon-ssm-region/latest/debian_arm/amazon-ssm-agent.deb

RHEL 7.x 和 CentOS 7.x,64 位

Copy
#!/bin/bash cd /tmp sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm sudo systemctl start amazon-ssm-agent

RHEL 7.x 和 CentOS 7.x,32 位

Copy
#!/bin/bash cd /tmp sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_386/amazon-ssm-agent.rpm sudo systemctl start amazon-ssm-agent

Amazon Linux、RHEL 6.x 和 CentOS 6.x,64 位

注意

在 2017.09 及以后日期版本的 Amazon Linux AMI 上,默认情况下会安装 SSM 代理。

Copy
#!/bin/bash cd /tmp sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm sudo start amazon-ssm-agent

Amazon Linux、RHEL 6.x 和 CentOS 6.x,32 位

注意

在 2017.09 及以后日期版本的 Amazon Linux AMI 上,默认情况下会安装 SSM 代理。

Copy
#!/bin/bash cd /tmp sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_386/amazon-ssm-agent.rpm sudo start amazon-ssm-agent

Ubuntu Server 16 64 位

Copy
#!/bin/bash cd /tmp wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb sudo dpkg -i amazon-ssm-agent.deb sudo systemctl enable amazon-ssm-agent

Ubuntu Server 16 32 位

Copy
#!/bin/bash cd /tmp wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_386/amazon-ssm-agent.deb sudo dpkg -i amazon-ssm-agent.deb sudo systemctl enable amazon-ssm-agent

SLES 64 位

Copy
#!/bin/bash cd /tmp wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm sudo rpm --install amazon-ssm-agent.rpm sudo systemctl start amazon-ssm-agent

Ubuntu Server 14 64 位

Copy
#!/bin/bash cd /tmp wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb sudo dpkg -i amazon-ssm-agent.deb sudo start amazon-ssm-agent

Ubuntu Server 14 32 位

Copy
#!/bin/bash cd /tmp wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_386/amazon-ssm-agent.deb sudo dpkg -i amazon-ssm-agent.deb sudo start amazon-ssm-agent

保存您的更改并完成向导。在实例启动时,系统会将 SSM 代理复制到实例并启动实例。当实例处于联机状态时,您可以使用 Run Command 配置它。有关更多信息,请参阅 使用 Systems Manager Run Command 执行命令

注意

在新版本可用时,您可以使用 Systems Manager 状态管理器 在您的实例上自动更新 SSM 代理。有关更多信息,请参阅演练:自动更新 SSM 代理

在 Amazon EC2 Linux 实例上手动安装 SSM 代理

使用以下脚本之一在下列 Linux 实例上安装 SSM 代理。

注意

使用以下脚本中的 URL 可从任意 AWS 区域下载 SSM 代理。如果您要从某特定 区域下载该代理,复制操作系统的 URL,然后将 region 替换为 SSM 可用的区域

例如,要从美国西部 1 区域下载适用于 Amazon Linux、RHEL、CentOS 和 SLES 64 位的 SSM 代理,请使用以下 URL:

Copy
https://s3-us-west-1.amazonaws.com/amazon-ssm-us-west-1/latest/linux_amd64/amazon-ssm-agent.rpm

如果下载失败,请尝试用 https://s3 替换 https://s3-区域区域.

  • Amazon Linux、RHEL、CentOS 和 SLES 64 位:

    https://s3-区域.amazonaws.com/amazon-ssm-region/latest/linux_amd64/amazon-ssm-agent.rpm

  • Amazon Linux、RHEL 和 CentOS 32 位:

    https://s3-区域.amazonaws.com/amazon-ssm-region/latest/linux_386/amazon-ssm-agent.rpm

  • Ubuntu Server 64 位:

    https://s3-区域.amazonaws.com/amazon-ssm-region/latest/debian_amd64/amazon-ssm-agent.deb

  • Ubuntu Server 32 位:

    https://s3-区域.amazonaws.com/amazon-ssm-region/latest/debian_386/amazon-ssm-agent.deb

手动安装 SSM 代理后,在新版本可用时,您可以使用 Systems Manager 状态管理器 在您的实例上自动更新 SSM 代理。有关更多信息,请参阅 演练:自动更新 SSM 代理

Amazon Linux

连接到您的 Amazon Linux 实例并执行下列步骤来安装 SSM 代理。使用 Systems Manager 对每个将执行命令的实例执行这些步骤。

注意

在 2017.09 及以后日期版本的 Amazon Linux AMI 上,默认情况下会安装 SSM 代理。

在 Amazon Linux 上安装 SSM 代理

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

    Copy
    mkdir /tmp/ssm
  2. 更改为临时目录。

    Copy
    cd /tmp/ssm
  3. 使用以下命令之一下载和运行 SSM 安装程序。

    64 位

    Copy
    sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

    32 位

    Copy
    sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_386/amazon-ssm-agent.rpm
  4. 运行以下命令确定 SSM 代理是否在运行。该命令应返回“amazon-ssm-agent is running”。

    Copy
    sudo status amazon-ssm-agent
  5. 如果上一个命令返回“amazon-ssm-agent is stopped”,则执行以下命令。

    1. 启动服务。

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

      Copy
      sudo status amazon-ssm-agent

Ubuntu

连接到您的 Ubuntu 实例并执行下列步骤来安装 SSM 代理。使用 Systems Manager 对每个将执行命令的实例执行这些步骤。

在 Ubuntu 上安装 SSM 代理

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

    Copy
    mkdir /tmp/ssm
  2. 使用以下命令之一下载和运行 SSM 安装程序。

    64 位

    Copy
    wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb sudo dpkg -i amazon-ssm-agent.deb

    32 位

    Copy
    wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_386/amazon-ssm-agent.deb sudo dpkg -i amazon-ssm-agent.deb
  3. 运行以下命令确定 SSM 代理是否在运行。

    Ubuntu Server 14

    Copy
    sudo status amazon-ssm-agent

    Ubuntu Server 16

    Copy
    sudo systemctl status amazon-ssm-agent
  4. 如果上一个命令返回“amazon-ssm-agent is stopped”、“inactive”或“disabled”,则执行以下命令。

    1. 启动服务。

      Ubuntu Server 14

      Copy
      sudo start amazon-ssm-agent

      Ubuntu Server 16

      Copy
      sudo systemctl enable amazon-ssm-agent
      Copy
      sudo systemctl start amazon-ssm-agent
    2. 检查代理的状态。

      Ubuntu Server 14

      Copy
      sudo status amazon-ssm-agent

      Ubuntu Server 16

      Copy
      sudo systemctl status amazon-ssm-agent

Red Hat Enterprise Linux

连接到您的 Red Hat Enterprise Linux (RHEL) 实例并执行下列步骤来安装 SSM 代理。使用 Systems Manager 对每个将执行命令的实例执行这些步骤。

在 Red Hat Enterprise Linux 上安装 SSM 代理

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

    Copy
    mkdir /tmp/ssm
  2. 使用以下命令之一下载和运行 SSM 安装程序。

    64 位

    Copy
    sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

    32 位

    Copy
    sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_386/amazon-ssm-agent.rpm
  3. 运行以下命令之一以确定 SSM 代理是否在运行。该命令应返回“amazon-ssm-agent is running”。

    RHEL 7.x

    Copy
    sudo systemctl status amazon-ssm-agent

    RHEL 6.x

    Copy
    sudo status amazon-ssm-agent
  4. 如果上一个命令返回“amazon-ssm-agent is stopped”,则执行以下命令。

    1. 启动服务。

      RHEL 7.x

      Copy
      sudo systemctl enable amazon-ssm-agent
      Copy
      sudo systemctl start amazon-ssm-agent

      RHEL 6.x

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

      RHEL 7.x

      Copy
      sudo systemctl status amazon-ssm-agent

      RHEL 6.x

      Copy
      sudo status amazon-ssm-agent

CentOS

连接到您的 CentOS 实例并执行下列步骤来安装 SSM 代理。使用 Systems Manager 对每个将执行命令的实例执行这些步骤。

在 CentOS 上安装 SSM 代理

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

    Copy
    mkdir /tmp/ssm
  2. 使用以下命令之一下载和运行 SSM 安装程序。

    64 位

    Copy
    sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

    32 位

    Copy
    sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_386/amazon-ssm-agent.rpm
  3. 运行以下命令之一以确定 SSM 代理是否在运行。该命令应返回“amazon-ssm-agent is running”。

    CentOS 7.x

    Copy
    sudo systemctl status amazon-ssm-agent

    CentOS 6.x

    Copy
    sudo status amazon-ssm-agent
  4. 如果上一个命令返回“amazon-ssm-agent is stopped”,则执行以下命令。

    1. 启动服务。

      CentOS 7.x

      Copy
      sudo systemctl enable amazon-ssm-agent
      Copy
      sudo systemctl start amazon-ssm-agent

      CentOS 6.x

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

      CentOS 7.x

      Copy
      sudo systemctl status amazon-ssm-agent

      CentOS 6.x

      Copy
      sudo status amazon-ssm-agent

SLES

连接到您的 SLES 实例并执行下列步骤来安装 SSM 代理。使用 Systems Manager 对每个将执行命令的实例执行这些步骤。

在 SLES 上安装 SSM 代理

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

    Copy
    mkdir /tmp/ssm
  2. 更改为临时目录。

    Copy
    cd /tmp/ssm
  3. 使用以下命令下载和运行 SSM 安装程序。

    64 位

    Copy
    wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm sudo rpm --install amazon-ssm-agent.rpm
  4. 运行以下命令确定 SSM 代理是否在运行。该命令应返回“amazon-ssm-agent is running”。

    Copy
    sudo systemctl status amazon-ssm-agent
  5. 如果上一个命令返回“amazon-ssm-agent is stopped”,则执行以下命令。

    1. 启动服务。

      Copy
      sudo systemctl enable amazon-ssm-agent sudo systemctl start amazon-ssm-agent
    2. 检查代理的状态。

      Copy
      sudo systemctl status amazon-ssm-agent

Raspbian

本部分包括有关如何在 Raspbian Jessie 和 Raspbian Stretch (包括 Raspberry Pi (32 位) 设备) 上安装 SSM 代理的信息。

开始前的准备工作

要将 Raspbian 设备设置为 Systems Manager 托管实例,您需要创建托管实例激活。完成激活后,您将收到一个激活代码和 ID。此代码/ID 组合具有 Amazon EC2 访问 ID 和私有密钥的功能,可提供从托管实例对 Systems Manager 服务的安全访问。在安全位置存储激活代码和 ID。有关激活流程的更多信息,请参阅在混合环境中设置 Systems Manager

连接到您的 Raspbian 设备并执行下列步骤来安装 SSM 代理。使用 Systems Manager 对每个将执行命令的实例执行这些步骤。

在 Raspbian 设备上安装 SSM 代理

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

    Copy
    mkdir /tmp/ssm
  2. 使用以下命令下载和运行 SSM 安装程序。

    Copy
    sudo curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_arm/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb
  3. 执行以下命令安装 SSM 代理。

    Copy
    sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb
  4. 执行以下命令停止 SSM 代理。

    Copy
    sudo service amazon-ssm-agent stop
  5. 执行以下命令,以使用您完成托管实例激活过程时收到的托管实例激活代码和 ID 注册代理。

    Copy
    sudo amazon-ssm-agent -register -code "code" -id "ID" -region "Region"
  6. 执行以下命令启动 SSM 代理。

    Copy
    sudo service amazon-ssm-agent start

配置 SSM 代理以使用代理

您可以通过向 SSM 代理配置文件添加 http_proxyno_proxy 设置,将 SSM 代理配置为通过 HTTP 代理进行通信。本部分包含适用于 upstartsystemd 环境的过程。

配置 SSM 代理以使用代理 (Upstart)

  1. 连接到已安装 SSM 代理的实例。

  2. 在编辑器 (如 VIM) 中打开 amazon-ssm-agent.conf 文件。默认情况下,此文件位于:

    /etc/init/amazon-ssm-agent.conf

  3. 采用以下格式向此文件添加下列设置:

    Copy
    env http_proxy=http://hostname:port env https_proxy=http://hostname:port env HTTP_PROXY=http://hostname:port env HTTPS_PROXY=http://hostname:port
  4. 采用以下格式向此文件添加 no_proxy 设置。您必须指定此处列出的 IP 地址。它是 SSM 的实例元数据终端节点,如果没有此 IP 地址,对 SSM 的调用将失败:

    Copy
    env no_proxy=169.254.169.254
  5. 保存更改并关闭编辑器。

  6. 使用以下命令停止和重新启动 SSM 代理:

    Copy
    sudo stop amazon-ssm-agent sudo start amazon-ssm-agent

以下 Upstart 示例包含 amazon-ssm-agent.conf 文件中的 http_proxyno_proxy 设置:

Copy
description "Amazon SSM Agent" author "Amazon.com" start on (runlevel [345] and started network) stop on (runlevel [!345] or stopping network) respawn env http_proxy=http://i-1234567890abcdef0:443 env no_proxy=169.254.169.254 chdir /usr/bin/ exec ./amazon-ssm-agent

配置 SSM 代理以使用代理 (systemd)

  1. 连接到已安装 SSM 代理的实例。

  2. 在编辑器 (如 VIM) 中打开 amazon-ssm-agent.service 文件。默认情况下,此文件位于:

    /etc/systemd/system/amazon-ssm-agent.service

  3. 将以下设置添加到此文件:

    Copy
    Environment="http_proxy=http://hostname:port" Environment="https_proxy=http://hostname:port" Environment="HTTP_PROXY=http://hostname:port" Environment="HTTPS_PROXYy=http://hostname:port"
  4. 采用以下格式向此文件添加 no_proxy 设置。您必须指定此处列出的 IP 地址。它是 SSM 的实例元数据终端节点,如果没有此 IP 地址,对 SSM 的调用将失败:

    Copy
    Environment="no_proxy=169.254.169.254"
  5. 保存更改并关闭编辑器。

  6. 使用以下命令重新启动 SSM 代理:

    Copy
    sudo systemctl stop amazon-ssm-agent sudo systemctl daemon-reload

以下 systemd 示例包含 amazon-ssm-agent.service 文件中的 http_proxyno_proxy 设置:

Copy
Type=simple Environment="HTTP_PROXY=http://i-1234567890abcdef0:443" Environment="no_proxy=169.254.169.254" WorkingDirectory=/opt/amazon/ssm/ ExecStart=/usr/bin/amazon-ssm-agent KillMode=process Restart=on-failure RestartSec=15min

查看 SSM 代理日志

SSM 代理将有关执行、计划操作、错误和运行状况的信息写入每个实例上的日志文件。您可以通过手动连接到实例,也可以将日志自动发送到 Amazon CloudWatch Logs,从而查看日志文件。有关将日志发送到 CloudWatch 的更多信息,请参阅将 SSM 代理日志文件发送到 Amazon CloudWatch Logs

您可以在以下位置中查看 Linux 实例的 SSM 代理日志。

  • /var/log/amazon/ssm/amazon-ssm-agent.log

  • /var/log/amazon/ssm/errors.log

您可通过更新 seelog.xml 文件来启用延长日志记录。默认情况下,配置文件位于以下位置:/etc/amazon/ssm/seelog.xml。

有关 cihub/seelog 配置的更多信息,请转到 cihub/seelog Wiki。有关 cihub/seelog 配置的示例,请转到 cihub/seelog 示例

从 Linux 实例卸载 SSM 代理

使用以下命令卸载 SSM 代理。

Amazon Linux、RHEL 或 Cent OS

Copy
sudo yum erase amazon-ssm-agent –y

Ubuntu

Copy
sudo dpkg -r amazon-ssm-agent

SLES

Copy
sudo rpm --erase amazon-ssm-agent