如何创建仅通过Session Manager访问的EC2实例及公网权限管控
实现EC2实例仅通过Session Manager访问的完整步骤
一、前期准备(让私有子网实例临时支持SSH)
- 创建VPC及两类子网:
- 公有子网:开启「自动分配公网IP」,路由表指向互联网网关(IGW)
- 私有子网:关闭「自动分配公网IP」,后续临时调整路由用于SSH登录
- 创建NAT网关(部署在公有子网,绑定EIP),后续供私有子网实例访问公网(安装SSM Agent时需要)
- 创建安全组:入站规则允许你的IP访问22端口(SSH),出站规则允许所有流量(方便安装依赖)
二、创建私有子网EC2实例并实现SSH登录
- 启动实例时选择私有子网,不勾选「自动分配公网IP」
- 实例创建完成后,为其绑定弹性IP(EIP)
- 修改私有子网的路由表:添加默认路由(0.0.0.0/0)指向互联网网关(IGW),此时绑定EIP的实例可被公网SSH访问
- 使用SSH密钥对登录实例,执行命令安装SSM Agent:
- Amazon Linux 2:
sudo yum install -y amazon-ssm-agent sudo systemctl enable amazon-ssm-agent sudo systemctl start amazon-ssm-agent - Ubuntu:
sudo snap install amazon-ssm-agent sudo systemctl enable amazon-ssm-agent sudo systemctl start amazon-ssm-agent
- Amazon Linux 2:
三、配置Session Manager访问权限
- 为EC2实例的IAM角色添加
AmazonSSMManagedInstanceCore权限策略,这是Session Manager访问的核心权限 - 在EC2控制台验证连接:选中实例,通过「连接」→「Session Manager」尝试进入终端,确认连接成功
四、关闭所有公网访问(关键步骤)
- 解绑实例的弹性IP(EIP)
- 修改私有子网路由表:将默认路由从互联网网关(IGW)改回NAT网关(实例仍能访问公网更新SSM Agent,但外部无法主动访问);若完全无需实例访问公网,可创建SSM相关VPC端点(
com.amazonaws.<区域>.ssm、com.amazonaws.<区域>.ec2messages、com.amazonaws.<区域>.ssmmessages),并将路由指向这些端点,彻底脱离公网依赖 - 更新安全组:移除入站规则中的SSH(22端口)权限,仅保留必要的出站规则
- 重启SSM Agent确保配置生效:
sudo systemctl restart amazon-ssm-agent
五、常见问题排查
- Session Manager连接失败:检查IAM角色权限是否正确、SSM Agent是否正常运行、VPC路由/端点配置是否无误
- 安装SSM Agent时无法联网:确认私有子网路由表指向NAT网关、安全组允许出站流量
内容的提问来源于stack exchange,提问作者Yonatan Huber
相关产品推荐
相关产品推荐

