使用EC2 Instance Connect(浏览器SSH)连接AWS EC2实例失败咨询
AWS EC2 Instance Connect 限制安全组源IP后连接失败解决方案
核心根因
EC2 Instance Connect 的浏览器端SSH连接并非从用户本地网络直接访问实例22端口,实际工作流程如下:
- 控制台发起连接请求后,AWS侧EC2 Instance Connect服务会生成临时SSH密钥对,将公钥推送到目标实例的
~/.ssh/authorized_keys文件,公钥默认留存60秒 - 后续由AWS后端的EC2 Instance Connect服务节点,从官方公布的对应区域公网IP段发起对实例22端口的访问,完成SSH连接建立
当安全组入站22端口仅允许本地IP访问时,会直接拦截AWS服务节点的访问请求,因此连接失败;开放0.0.0.0/0时服务节点请求可正常通过,连接恢复正常。
可行解决方案
方案1:安全组添加EC2 Instance Connect服务公网IP段
在实例关联的安全组入站规则中,保留本地IP的22端口允许规则,额外添加对应区域的EC2 Instance Connect服务IP段的22端口允许规则即可。
- 提示:AWS会公开全区域服务IP范围,筛选实例所在区域
service字段为EC2_INSTANCE_CONNECT的所有IP前缀,添加到安全组规则即可。
方案2:使用EC2 Instance Connect Endpoint(安全性更高)
如果不想在安全组中开放公网IP段访问权限,可在实例所在VPC中创建EC2 Instance Connect Endpoint,该端点为VPC内部私有资源,连接流程完全走AWS内部网络:
- 无需实例绑定公网IP
- 安全组仅需要允许该Endpoint所在私有子网的CIDR段访问22端口即可,无需开放任何公网IP访问权限
- 同时支持浏览器端连接和本地SSH客户端通过Endpoint代理连接,适配多种使用场景
补充说明
Session Manager无法连接是因为实例未安装SSM Agent,且实例关联的IAM角色缺少SSM相关权限。如需使用该连接方式,只需在实例上安装对应版本的SSM Agent,为实例绑定带有AmazonSSMManagedInstanceCore权限的IAM角色即可正常使用,无需为实例开放任何入站端口。
内容的提问来源于stack exchange,提问作者Dude
相关产品推荐
相关产品推荐

