EC2实例安装SSM Agent后无法成为受管实例
我之前也遇到过类似的Windows Server 2012 R2实例无法在SSM Managed Instances中显示的问题,结合AWS官方文档和实际排查经验,给你整理了以下逐步排查的思路——既然相同步骤在其他实例生效,问题大概率集中在这个特定实例的配置或环境细节上:
1. 先验证网络连通性是否正常
SSM Agent必须能和AWS SSM服务的区域端点建立HTTPS(443端口)连接,这是注册的基础:
- 用PowerShell测试端点连通性:
如果测试失败,先检查实例的安全组/网络ACL是否允许出站443流量到SSM端点;如果用了VPC端点,确认Test-NetConnection ssm.<你的AWS区域>.amazonaws.com -Port 443com.amazonaws.<区域>.ssm端点已创建,且实例所在子网关联了正确的端点策略。 - 排查本地安全软件:企业级杀毒、防火墙可能会拦截出站HTTPS请求,临时禁用后测试是否能注册成功。
2. 确认IAM角色权限与关联状态
哪怕其他实例正常,也别跳过这一步——可能这个实例的IAM角色配置有疏漏:
- 确保实例关联的IAM角色包含
AmazonSSMManagedInstanceCore托管策略,或者自定义策略覆盖了ssm:RegisterManagedInstance、ssm:UpdateInstanceInformation等核心权限。 - 验证实例是否正确关联IAM角色:在PowerShell中运行:
如果返回空或错误,说明角色未正确关联,需要重新为实例附加IAM角色。Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/iam/security-credentials/
3. 深挖日志找错误线索
日志是排查这类问题的核心,Windows上的关键日志位置:
- SSM Agent日志:
C:\Program Files\Amazon\SSM\Logs\amazon-ssm-agent.log - EC2 Config日志:
C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt
重点搜索包含RegisterManagedInstance、Failed、Error的条目,比如如果日志显示“无法获取实例身份文档”,说明实例元数据服务(IMDS)访问有问题;如果是“认证失败”,则指向IAM权限问题。
4. 检查实例元数据服务(IMDS)配置
Windows Server 2012 R2的旧AMI可能存在IMDS配置问题:
- 在EC2控制台查看实例的「元数据选项」,确保“允许实例元数据访问”处于启用状态。如果用了IMDSv2,可暂时切换为IMDSv1测试(部分旧版本SSM Agent对IMDSv2兼容性不佳)。
- 测试IMDS访问:
若返回实例ID则正常,否则检查IMDS是否被实例内部的防火墙或配置禁用。Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id
5. 手动触发SSM Agent重新注册
有时候自动注册流程未触发,手动重置注册状态可能解决:
- 停止SSM Agent服务:
Stop-Service AmazonSSMAgent - 删除SSM Agent的注册缓存:删除
C:\Program Files\Amazon\SSM\var\registration目录下的所有文件(这会清除旧的注册信息,让Agent重新发起注册请求)。 - 重启SSM Agent服务:
Start-Service AmazonSSMAgent
等待5-10分钟后,再去Managed Instances页面查看是否出现该实例。
6. 验证EC2 Config的配置状态
EC2 Config在Windows Server 2012 R2中负责实例初始化和SSM关联的关键工作:
- 打开EC2 Config Service控制台(路径:
C:\Program Files\Amazon\Ec2ConfigService\Ec2ConfigService.exe),在「Configuration」标签下确认「Enable SSM Agent」已勾选。 - 检查EC2 Config服务状态:
如果服务未运行,启动并设置为自动启动:Get-Service Ec2ConfigServiceStart-Service Ec2ConfigService Set-Service Ec2ConfigService -StartupType Automatic
7. 检查.NET框架与系统更新
Windows Server 2012 R2的环境依赖可能不满足SSM Agent的运行要求:
- SSM Agent 2.2.x版本需要.NET Framework 4.5及以上,用以下命令检查版本:
若版本低于4.5,安装.NET Framework 4.8(Windows Server 2012 R2支持)。Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name Version, Release -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match '^(?!S)\p{L}' } | Select-Object PSChildName, Version, Release - 确保实例安装了TLS 1.2相关更新(如KB3192392),因为SSM服务要求使用TLS 1.2通信。若未启用TLS 1.2,可通过注册表手动开启(需管理员权限):
修改后重启实例,再测试SSM Agent注册情况。New-Item 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Force | New-ItemProperty -Name 'SchUseStrongCrypto' -Value '1' -PropertyType DWord New-Item 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319' -Force | New-ItemProperty -Name 'SchUseStrongCrypto' -Value '1' -PropertyType DWord New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Force | New-ItemProperty -Name 'DisabledByDefault' -Value '0' -PropertyType DWord New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Force | New-ItemProperty -Name 'Enabled' -Value '1' -PropertyType DWord
内容的提问来源于stack exchange,提问作者Ehab Al khashman
相关产品推荐
相关产品推荐

