AWS EC2实例SSM-Agent安装与配置全攻略(含常见错误排查)

张开发
2026/4/9 20:06:35 15 分钟阅读

分享文章

AWS EC2实例SSM-Agent安装与配置全攻略(含常见错误排查)
AWS EC2实例SSM-Agent安装与配置全攻略含常见错误排查在云原生运维的日常工作中自动化管理服务器实例已成为提升效率的关键。AWS Systems Manager AgentSSM-Agent作为连接EC2实例与AWS管理服务的桥梁能够实现无需SSH密钥的安全会话管理、批量命令执行、自动化任务调度等核心功能。本文将深入解析从基础安装到高级配置的全流程并针对实际部署中可能遇到的权限陷阱、网络连接问题提供经过验证的解决方案。1. 环境准备与基础安装在开始安装SSM-Agent前需要确认EC2实例满足基本运行条件。不同于传统服务部署SSM-Agent对实例的IAM角色配置有着严格要求。以下是准备工作清单操作系统兼容性检查SSM-Agent支持Amazon Linux、Ubuntu、RHEL、CentOS等主流发行版各版本安装命令略有差异网络连通性验证确保实例能访问ssm.region.amazonaws.com和ec2messages.region.amazonaws.com等终端节点IAM角色预配置这是90%安装失败的根源需要提前为实例附加AmazonSSMManagedInstanceCore策略对于Amazon Linux 2/2023这类AWS官方镜像通常已预装SSM-Agent。可通过以下命令验证systemctl status amazon-ssm-agent若返回active (running)状态则无需重复安装。对于需要手动安装的情况不同系统的安装方式如下操作系统安装命令Amazon Linux 2sudo yum install -y amazon-ssm-agentUbuntusudo snap install amazon-ssm-agent --classicRHEL/CentOS 8sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm注意Ubuntu 22.04等新版系统建议使用snap安装可自动处理依赖关系和版本更新安装完成后启动服务并设置开机自启sudo systemctl enable --now amazon-ssm-agent2. IAM权限深度配置权限配置是SSM-Agent正常工作的核心前提。常见的AccessDeniedException错误往往源于角色策略配置不当。我们需要从三个维度构建完整的访问控制体系2.1 基础策略配置为EC2实例附加的IAM角色必须包含以下托管策略AmazonSSMManagedInstanceCore必需CloudWatchAgentServerPolicy可选用于监控指标收集通过AWS控制台配置时需特别注意导航至IAM 角色 创建角色选择AWS服务作为可信实体类型选择EC2作为使用案例搜索并添加上述策略2.2 自定义策略进阶配置当需要精细化控制时可创建自定义策略。以下是一个最小权限策略示例{ Version: 2012-10-17, Statement: [ { Effect: Allow, Action: [ ssm:DescribeAssociation, ssm:GetDocument, ssm:ListAssociations, ssm:UpdateInstanceInformation ], Resource: * }, { Effect: Allow, Action: [ ec2messages:AcknowledgeMessage, ec2messages:DeleteMessage, ec2messages:FailMessage, ec2messages:GetEndpoint, ec2messages:GetMessages, ec2messages:SendReply ], Resource: * } ] }2.3 实例角色绑定实操完成角色创建后需要将其绑定到目标EC2实例在EC2控制台选择目标实例进入操作 安全 修改IAM角色选择新建的SSM角色点击更新IAM角色关键提示修改IAM角色后必须重启SSM-Agent服务使配置生效sudo systemctl restart amazon-ssm-agent3. 网络连接问题排查即使权限配置正确网络问题仍可能导致SSM-Agent连接失败。以下是典型网络故障场景及解决方案3.1 终端节点可达性测试执行以下命令测试到SSM服务端点的连通性# 替换region为实际区域如us-east-1 REGIONus-east-1 curl -v https://ssm.$REGION.amazonaws.com正常响应应返回HTTP 400表示身份验证未通过但连接成功。若出现连接超时需检查安全组出站规则是否放行HTTPS443端口网络ACL是否限制出站流量VPC是否配置了SSM VPC终端节点3.2 代理服务器配置在企业环境中实例可能需要通过代理访问互联网。SSM-Agent的代理配置方法如下创建配置文件/etc/amazon/ssm/amazon-ssm-agent.json如不存在添加代理设置{ profile: { proxy: { http_proxy: http://proxy.example.com:8080, no_proxy: 169.254.169.254,localhost } } }重启服务应用配置sudo systemctl restart amazon-ssm-agent4. 日志分析与高级调试当SSM-Agent运行异常时日志是定位问题的第一手资料。日志文件默认位于/var/log/amazon/ssm/amazon-ssm-agent.log4.1 常见错误模式识别通过tail -f实时监控日志时需特别关注以下错误模式案例1凭证获取失败ERROR [CredentialRefresher] Retrieve credentials produced error: no valid credentials could be retrieved for ec2 identity这表明实例元数据服务IMDS不可达或IAM角色未正确附加。解决方案验证curl http://169.254.169.254/latest/meta-data/iam/security-credentials/是否返回角色信息检查实例是否配置了IMDSv2且未禁用v1回退案例2权限拒绝ERROR EC2RoleProvider Failed to connect to Systems Manager with SSM role credentials. error calling RequestManagedInstanceRoleToken: AccessDeniedException: Systems Managers instance management role is not configured for account: 123456789012这通常表示IAM角色未附加AmazonSSMManagedInstanceCore策略账户级SSM服务未激活需检查AWS Organizations服务控制策略4.2 调试模式启用对于复杂问题可启用调试日志获取更详细的信息编辑配置文件/etc/amazon/ssm/seelog.xml修改日志级别为debugseelog minleveldebug重启服务后重现问题分析包含[DEBUG]标记的详细日志5. 自动化部署最佳实践对于需要批量部署的场景推荐以下自动化方案5.1 用户数据脚本部署在EC2启动时通过用户数据自动安装配置#!/bin/bash # 适用于Amazon Linux 2 yum install -y amazon-ssm-agent systemctl enable --now amazon-ssm-agent5.2 AWS Systems Manager自动部署利用SSM本身的自动化能力部署Agent创建维护窗口Maintenance Windows设置运行命令Run Command目标为标签SSM-Agent-StatusNeedsInstall使用AWS-ConfigureAWSPackage文档执行安装5.3 Terraform自动化配置通过IaC工具统一管理权限和部署resource aws_iam_role ssm_role { name SSM-Managed-Instance-Role assume_role_policy jsonencode({ Version 2012-10-17 Statement [ { Action sts:AssumeRole Effect Allow Principal { Service ec2.amazonaws.com } } ] }) } resource aws_iam_role_policy_attachment ssm_core { role aws_iam_role.ssm_role.name policy_arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore } resource aws_iam_instance_profile ssm_profile { name SSM-Instance-Profile role aws_iam_role.ssm_role.name }6. 版本管理与升级策略SSM-Agent的版本兼容性直接影响功能可用性。建议实施以下版本管理策略自动更新配置在/etc/amazon/ssm/amazon-ssm-agent.json中设置{ updates: { automatic: true, allowDowngrade: false } }手动升级命令# Amazon Linux sudo yum update amazon-ssm-agent # Ubuntu sudo snap refresh amazon-ssm-agent版本验证amazon-ssm-agent -version在实际生产环境中建议先在测试实例验证新版本兼容性再通过SSM Run Command批量滚动更新。

更多文章