AWS安全组入站规则配置疑问:SSM Session Manager连接异常
AWS安全组入站规则配置疑问:SSM Session Manager连接异常
兄弟,我太懂你这种摸不着头脑的感觉了!当初第一次折腾Session Manager的时候,我也在安全组规则上绕了好大一个弯,先给你把核心逻辑掰明白:
Session Manager的连接逻辑和传统SSH完全不一样,它是由你的EC2实例主动发起出站连接到AWS的SSM管理服务的,纯Session Manager连接根本不需要任何入站安全组规则!你遇到的问题绝对不是入站规则导致的,大概率是其他环节的配置漏了,我给你逐条排查:
先理清楚你遇到的矛盾点
你说“安全组全开放入站时能连,改成仅允许22就不行”,这里最可能的原因是:你在调整入站规则的时候,不小心动了出站规则,或者你的实例本来就依赖全开放的出站流量才能连到SSM服务。
正确的配置要求(重点记!)
要让Session Manager正常工作,你只需要确保这几点:
- 安全组出站规则必须允许HTTPS(443端口):目标范围可以设为对应AWS区域的服务前缀列表(比如
com.amazonaws.us-east-1,替换成你的实例所在区域),这样实例能和AWS的SSM服务建立通信。 - 实例的IAM角色权限要够:给实例绑定带有
AmazonSSMManagedInstanceCore托管策略的IAM角色,这是SSM管理实例的基础权限。 - 私有子网的实例要能访问SSM服务:
- 要么给私有子网配置NAT网关,让实例通过NAT网关访问公网的SSM服务
- 要么在VPC里创建三个VPC端点:SSM端点、EC2 Messages端点、KMS端点,这样实例可以通过内网直接连SSM,不用走公网
- 实例上的SSM代理要正常运行:Amazon Linux 2/2023默认预装了代理,像Ubuntu、CentOS这类系统可能需要你手动安装并启动服务。
关于入站规则的澄清
如果只是用Session Manager直接连接实例(不用它转发SSH),入站规则可以完全关闭,不需要开22或者任何端口。你之前的误解可能是把Session Manager和“通过Session Manager转发SSH连接”的场景搞混了——后者需要实例内部的防火墙开22,但安全组入站依然不需要配置。
给你的快速修复建议
- 先检查实例的安全组出站规则,确认有没有允许443端口到AWS服务的流量
- 验证实例的IAM角色是否带有
AmazonSSMManagedInstanceCore权限 - 登录实例(用你现在能连的全开放规则),运行
amazon-ssm-agent status命令看看代理是不是正常运行
备注:内容来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

