在混合 Linux 节点上安装 SSM Agent
本主题介绍如何在混合和多云环境中的非 EC2(Amazon Elastic Compute Cloud)Linux 计算机上安装 AWS Systems Manager SSM Agent。如果您计划在混合和多云环境中使用 Windows Server 计算机,请参阅下一步骤:在混合 Windows Server 节点上安装 SSM Agent。
重要
此过程适用于混合和多云环境中 EC2 实例以外的计算机类型。要在适用于 Linux 的 EC2 实例上下载并安装 SSM Agent,请参阅 在适用于 Linux 的 EC2 实例上手动安装和卸载 SSM Agent。
在开始前,找到之前在 创建混合激活以将节点注册到 Systems Manager 中完成混合激活后收到的激活代码和激活 ID。按照以下流程指定激活代码和 ID。
在混合和多云环境中的非 EC2 计算机上安装 SSM Agent
-
登录混合和多云环境中的服务器或虚拟机。
-
如果使用 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
-
将以下命令块之一复制并粘贴到 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
不应另行存放以供将来使用。 -
您可以使用此处
提供的脚本来验证 ssm-setup-cli
的签名。
region
表示 AWS Systems Manager 支持的 AWS 区域 的标识符,例如us-east-2
对应美国东部(俄亥俄)区域。有关支持的region
值的列表,请参阅《Amazon Web Services 一般参考》中的 Systems Manager service endpoints 的 Region 列。此外,
ssm-setup-cli
包括以下选项:-
version
–有效值为latest
和stable
。 -
downgrade
– 允许将 SSM Agent 降级为早期版本。指定true
安装早期版本的代理。 -
skip-signature-validation
– 在下载和安装代理期间跳过签名验证。
-
mkdir /tmp/ssm curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/3.0.1479.0/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm sudo stop amazon-ssm-agent sudo -E amazon-ssm-agent -register -code "
activation-code
" -id "activation-id
" -region "region
" sudo start amazon-ssm-agent
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
" -id "activation-id
" -region "region
"
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
"
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
"
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
"
mkdir /tmp/ssm curl https://amazon-ssm-
region
.s3.region
.amazonaws.com/latest/debian_arm/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
"
-
使用 .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 下载代理。 在 Ubuntu Server 20.10 STR & 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。
设置私有密钥自动轮换
为了加强安全状况,您可以将 AWS Systems Manager 代理(SSM Agent)配置为自动轮换混合和多云环境私有密钥。您可以使用 SSM Agent 版本 3.0.1031.0 或更高版本来访问此功能。使用以下过程开启此功能。
将 SSM Agent 配置为轮换混合和多云环境私有密钥
-
在 Linux 计算机上导航到
/etc/amazon/ssm/
,或者在 Windows 计算机上导航到C:\Program Files\Amazon\SSM
。 -
将
amazon-ssm-agent.json.template
的内容复制到名为amazon-ssm-agent.json
的新文件中。Saveamazon-ssm-agent.json
在同一目录中,其中amazon-ssm-agent.json.template
位于中。 -
找到
Profile
、KeyAutoRotateDays
。输入您希望自动轮换私有密钥的间隔天数。 -
重新启动 SSM Agent。
每次更改配置时,请重新启动 SSM Agent。
您可以按照相同的过程自定义 SSM Agent 的其他功能。有关可用配置属性及其默认值的最新列表,请参阅配置属性定义
取消注册及重新注册托管式节点(Linux)
您可以从 AWS CLI 或借助适用于 Windows PowerShell 的工具来调用 DeregisterManagedInstance 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
您可以在取消注册后重新注册计算机。按照以下步骤来重新注册计算机。完成这些步骤后,您的托管式节点将再次在托管式节点列表中显示。
在 非 EC2 Linux 计算机上重新注册托管节点
-
连接到您的计算机。
-
运行以下命令。请务必将占位符的值替换为在创建托管节点激活时生成的激活码和激活 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 安装进行故障排除
使用以下信息来帮助您解决混合激活 Linux 计算机在混合和多云环境中安装 SSM Agent 时出现的问题。
收到 DeliveryTimedOut 错误
问题:将一个 AWS 账户 中的计算机配置为单独 AWS 账户 的托管节点时,运行在目标计算机上安装 SSM Agent 的命令后,您将收到 DeliveryTimedOut
。
解决方案:在此场景中,DeliveryTimedOut
是预期响应代码。在目标节点上安装 SSM Agent 的命令会更改源节点的节点 ID。由于节点 ID 已更改,源节点无法响应命令执行时失败、已完成或超时的目标节点。
无法加载节点关联
问题:运行安装命令后,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