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

安装 SSM 代理

Amazon EC2 Systems Manager (SSM) 代理负责处理 Systems Manager 请求并按照请求中指定的方式配置计算机。

SSM 使用 EC2 消息收发服务与您实例上的 SSM 代理通信。如果您对流量进行监控,就会发现实例会与 ec2messages.* 终端节点进行通信。

使用以下过程可安装、配置或卸载 SSM 代理。

在 Windows 上安装 SSM 代理

在您的实例上运行的代理负责处理 Systems Manager 请求并按照请求中指定的方式配置实例。默认情况下,SSM 代理安装在 Windows Server 2016 实例以及通过 2016 年 11 月或之后发布的 Windows Server 2003-2012 R2 AMI 创建的实例上。

2016 年 11 月之前 发布的 Windows AMI 使用 EC2Config 服务处理请求并配置实例。

除非您出于特定原因需要使用 EC2Config 服务或早期版本的 SSM 代理来处理 Systems Manager 请求,否则建议您下载最新版本的 SSM 代理并将其安装到每个 Amazon EC2 实例或托管实例 (混合环境中的服务器和 VM)。

注意

托管实例的 SSM 代理下载和安装过程与 Amazon EC2 实例的不同。有关更多信息,请参阅 在 Windows 混合环境中的服务器和虚拟机上安装 SSM 代理

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

安装 SSM 代理

如果您的实例是在 2016 年 11 月之前 创建的 Windows Server 2003-2012 R2 实例,则 EC2Config 在您的实例上处理 Systems Manager 请求。我们建议您升级现有实例以使用最新版本的 EC2Config。通过升级,您可以同时安装 SSM 代理和 EC2Config。此版 SSM 代理与通过之前的 Windows AMI 创建的实例兼容,而且借助此代理,您能够使用 2016 年 11 月之后发布的 SSM 功能。您可以使用 Run Command 在一个或多个实例上远程更新 EC2Config 并安装 SSM 代理。有关更多信息,请参阅 从 EC2 控制台执行命令

或者,您也可以使用以下过程手动下载并安装最新版本的 SSM 代理。

手动下载并安装最新版本的 SSM 代理

  1. 登录您的实例。

  2. 将最新版本的 SSM 代理下载到您的实例上。

    https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/windows_amd64/AmazonSSMAgentSetup.exe.

    使用此 URL 可从任意 AWS 区域下载 SSM 代理。如果您要从特定区域下载代理,请改为使用特定于区域的 URL:

    https://amazon-ssm-region.s3.amazonaws.com/latest/windows_amd64/AmazonSSMAgentSetup.exe

  3. 使用 Windows 服务控制面板或者通过在 PowerShell 中发送以下命令,来启动或重新启动 SSM 代理 (AmazonSSMAgent.exe):

    Copy
    Restart-Service AmazonSSMAgent

SSM 代理日志

在 Windows 上,SSM 代理将日志文件存储在下列位置。

  • %PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log

  • %PROGRAMDATA%\Amazon\SSM\Logs\errors.log

配置 SSM 代理以使用代理

有关配置 EC2Config 以使用代理的信息,请参阅配置 EC2Config 服务的代理设置

配置 SSM 代理以使用代理

  1. 使用远程桌面或 Windows PowerShell,连接到您希望配置的实例,以使用代理。对于使用 Nano 安装选项 (Nano Server) 的 Windows Server 2016 实例,您必须使用 PowerShell 连接。有关更多信息,请参阅连接到 Windows Server 2016 Nano Server 实例

  2. 如果您使用远程桌面连接,则以管理员的身份启动 PowerShell。

  3. 在 PowerShell 中运行以下命令块:

    Copy
    $serviceKey = "HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent" $keyInfo = (Get-Item -Path $serviceKey).GetValue("Environment") $proxyVariables = @("http_proxy=hostname:port", "no_proxy=169.254.169.254") If($keyInfo -eq $null) { New-ItemProperty -Path $serviceKey -Name Environment -Value $proxyVariables -PropertyType MultiString -Force } else { Set-ItemProperty -Path $serviceKey -Name Environment -Value $proxyVariables } Restart-Service AmazonSSMAgent

重置 SSM 代理的代理配置

  1. 使用远程桌面或 Windows PowerShell,连接到您希望配置的实例。

  2. 如果您使用远程桌面连接,则以管理员的身份启动 PowerShell。

  3. 在 PowerShell 中运行以下命令块:

    Copy
    Remove-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent -Name Environment Restart-Service AmazonSSMAgent

在 Linux 上安装 SSM 代理

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

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

注意

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

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

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

 在启动时安装 SSM 代理

注意

使用以下脚本中的 URL 可从任意 AWS 区域下载 SSM 代理。如果您要从特定区域下载代理,请将以下 URL 替换为下列特定于区域的 URL 之一。您必须指定 Systems Manager 可用的区域。

如果下载失败,请尝试用 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

Amazon Linux、RHEL 和 CentOS 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

Amazon Linux、RHEL 和 CentOS 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

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

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 执行命令

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

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

注意

使用以下脚本中的 URL 可从任意 AWS 区域下载 SSM 代理。如果您要从特定区域下载代理,请将以下 URL 替换为下列特定于区域的 URL 之一。您必须指定 Systems Manager 可用的区域。

如果下载失败,请尝试用 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

Amazon Linux

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

在 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

配置 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. 采用以下格式向此文件添加 http_proxy 设置:

    Copy
    env http_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. 采用以下格式向此文件添加 http_proxy 设置:

    Copy
    Environment="HTTP_PROXY=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 代理在下列文件中记录信息。这些文件中的信息可帮助您排查问题。

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

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

在 Linux 上,您可通过更新 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