
1. 为什么需要SSM-Agent如果你正在使用AWS EC2实例管理服务器手动通过SSH连接每台机器就像用钥匙开每一扇门——效率低还容易丢钥匙。SSM-Agent就是AWS提供的智能门禁系统它能让你在浏览器里直接操作所有EC2实例无需暴露SSH端口更不用记密钥对。我管理过上百台游戏服务器曾经因为密钥泄露导致服务器被入侵后来全面改用SSM后运维效率提升了3倍不止。这个轻量级代理程序默认已安装在Amazon Linux 2等官方镜像中但当你遇到自定义镜像或特殊环境时就需要手动安装。更实用的是它不仅能替代SSH还能配合Systems Manager实现自动化运维、批量命令执行、补丁管理等功能。上周我就用它同时给50台服务器打上了安全补丁整个过程只用了5分钟。2. 安装前的准备工作2.1 IAM角色配置我见过太多人卡在权限问题上其实就像给新员工发门禁卡——没配置正确权限当然进不了办公室。首先到IAM控制台创建一个新角色比如命名为SSM-Managed-Instance-Role关键是要附加这两个策略AmazonSSMManagedInstanceCore基础权限相当于办公区通行证AmazonEC2RoleforSSM可选如果需要与EC2 API交互# 快速检查当前实例是否已附加角色 aws sts get-caller-identity --query Arn --output text注意修改IAM角色后可能需要15分钟才能生效这是AWS的缓存机制导致的不是你的操作有问题2.2 网络连通性验证有一次我折腾了两小时才发现是VPC端点没配置所以现在都会先做这个测试# 测试SSM服务端点连通性 telnet ssm.ap-northeast-1.amazonaws.com 443如果无法连接你需要检查安全组出站规则至少开放443端口确认VPC有互联网网关或配置了SSM VPC端点测试DNS解析是否正常nslookup ssm.ap-northeast-1.amazonaws.com3. 详细安装指南3.1 Amazon Linux 2安装官方源安装最稳定我对比过各种方法后推荐这个# 一键安装命令 sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm # 启动并设置开机自启 sudo systemctl enable amazon-ssm-agent sudo systemctl start amazon-ssm-agent # 验证状态看到active/running才算成功 sudo systemctl status amazon-ssm-agent3.2 Ubuntu/Debian系统这里有个坑要注意——包名不同# 对于Ubuntu 20.04 wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb sudo dpkg -i amazon-ssm-agent.deb sudo service amazon-ssm-agent start3.3 离线环境安装有次给银行客户部署私有云时总结的方法先在有网络的机器下载rpm包用scp传到目标服务器手动安装依赖sudo yum install -y perl-Digest-SHA.x86_64 sudo rpm -ivh amazon-ssm-agent.rpm4. 故障排除大全4.1 日志分析技巧查看实时日志就像读侦探小说关键线索往往在最后几行# 跟踪最新日志按CtrlC退出 sudo tail -f /var/log/amazon/ssm/amazon-ssm-agent.log常见错误及解决方案403 Forbidden错误[ERROR] CredentialRetriever: unable to get credentials - EC2RoleRequestError: no EC2 instance role found这说明实例没绑定IAM角色或者角色没正确配置SSM权限404 Not Founderror calling RequestManagedInstanceRoleToken: AccessDeniedException通常是区域配置错误检查是否在正确的AWS区域操作4.2 手动注册实例当自动注册失败时可以手动注册sudo /usr/bin/amazon-ssm-agent -register -code 激活码 -id 激活ID -region 区域激活码和ID可以在Systems Manager的混合激活功能里创建这个功能特别适合混合云场景。5. 高级配置技巧5.1 多账户管理我们游戏运营有开发、测试、生产三个账户配置跨账户管理很实用在主账户创建AmazonSSMMasterPolicy在子账户创建AmazonSSMMemberPolicy通过资源组实现跨账户管理5.2 性能调优大规模部署时要调整这些参数编辑/etc/amazon/ssm/amazon-ssm-agent.json{ Worker: { NumWorkers: 20, JobQueueSize: 100 } }5.3 安全加固建议增加这些配置启用日志加密CloudWatchLogs: {LogGroupName: SSM-Logs,EncryptionEnabled: true}限制可执行命令通过IAM策略限制ssm:SendCommand的权限有次凌晨三点我被报警叫醒发现SSM日志里出现大量异常命令记录后来加了命令审计策略才彻底解决问题。现在所有关键操作都会自动记录到CloudTrail再配合EventBridge设置异常操作报警终于能睡个安稳觉了。