配置VPC端点后仍无法通过AWS Session Manager连接无公网IP的EC2实例
配置VPC端点后仍无法通过AWS Session Manager连接无公网IP的EC2实例
这种情况确实挺挠头的——明明配了VPC端点、IAM角色也和正常实例完全一致,偏偏去掉公网IP就连不上。我帮你梳理几个关键排查点,你可以逐一验证:
确认VPC端点的完整配置
Session Manager要正常工作,三个VPC端点缺一不可,你得检查是不是都创建了:com.amazonaws.<你的区域>.ssmcom.amazonaws.<你的区域>.ec2messagescom.amazonaws.<你的区域>.ssmmessages
很多人容易漏配其中某一个,这会直接导致实例没法和SSM服务建立完整通信。
检查VPC端点与子网路由表的关联
要确保EC2-B所在的子网,其绑定的路由表已经把SSM服务对应的前缀列表流量,路由到你创建的VPC端点上。要是路由表没关联,实例的流量根本走不到VPC端点,自然连不上SSM。再核对安全组规则细节
虽然你说安全组全开,但还是要确认两个方向的规则:- VPC端点的安全组:得允许EC2实例所在子网的CIDR段(或者实例IP)发起的**HTTPS(443端口)**入站请求。
- EC2实例的安全组:要允许出站到VPC端点的**HTTPS(443端口)**流量。有时候“全开”可能只设置了入站,出站规则的疏漏很容易被忽略。
检查SSM Agent的状态与版本
旧版本的SSM Agent可能存在兼容性问题,你可以试试:- 如果能通过内网其他机器访问EC2-B,执行
amazon-ssm-agent status查看agent运行状态,要是显示未运行,就重启agent:sudo systemctl restart amazon-ssm-agent(Linux实例)。 - 确认agent是最新版本,旧版可能没法通过VPC端点正常和SSM服务保持心跳。
- 如果能通过内网其他机器访问EC2-B,执行
验证VPC的DNS设置
VPC必须同时启用DNS主机名和DNS解析,否则实例没法正确解析VPC端点的域名。去VPC控制台的“你的VPC”页面,检查这两个选项是不是都设为“已启用”。测试实例到SSM服务的连通性
要是能登录EC2-B,执行这两个命令验证:curl https://ssm.<你的区域>.amazonaws.com,返回403(无权限)是正常的,说明网络能通;如果超时或者连不上,那就是网络层面的问题。telnet ssm.<你的区域>.amazonaws.com 443,能建立连接就说明端口是通的。
查看Fleet Manager中的实例状态
去System Manager的Fleet Manager里看EC2-B的状态,如果显示“已注册但未连接”,那基本就是agent没正常和SSM服务通信,重点排查agent状态和网络连通性。
按照这些步骤逐一排查,应该能找到问题根源。我之前碰到好几次都是漏配了某个VPC端点,或者路由表没关联导致的。
备注:内容来源于stack exchange,提问作者kusiewicz
相关产品推荐
相关产品推荐

