You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Boto3创建AWS EC2实例后无法SSH连接,求解决方法

无法SSH连接到Boto3创建的EC2实例?排查与配置指南

你的EC2实例创建代码本身没问题,但SSH连不上基本都是几个关键配置环节没到位,咱们一步步来排查和补全:

1. 先检查安全组(Security Group)配置

这是最常见的“坑”!如果你创建实例时没指定SecurityGroupIds参数,AWS会自动分配默认安全组,但默认组只允许同组内的流量,压根没开放SSH的22端口。

你得确保安全组有这条入站规则:

  • 规则类型:SSH(22)
  • 来源:建议设为你的本地公网IP(更安全),测试阶段可以暂时用0.0.0.0/0(别在生产环境这么干)

要是想在代码里直接指定安全组,修改代码加上SecurityGroupIds参数就行:

instance = ec2.create_instances(
    ImageId='ami-15e9c770',
    MinCount=1,
    MaxCount=1,
    InstanceType='t2.micro',
    KeyName="xyz",
    Placement={'AvailabilityZone':'us-east-2b'},
    SecurityGroupIds=['sg-xxxxxxxx']  # 替换成你的安全组ID
)

2. 确认密钥对(Key Pair)没搞错

  • 你用的KeyName="xyz"必须是us-east-2区域创建的密钥对,而且本地得有对应的私钥文件(比如xyz.pem)
  • 私钥文件权限必须改对!Linux/macOS下执行chmod 400 xyz.pem,不然SSH会直接拒绝连接
  • 连接时的默认用户名要对应对:Amazon Linux 2用ec2-user,Ubuntu用ubuntu,CentOS用centos,别瞎试用户名

3. 验证实例的网络可达性

  • 先看实例有没有公网IP:去EC2控制台看实例的“公网IPv4地址”,如果没有,要么给实例分配弹性IP,要么检查子网的“自动分配公网IP”选项是不是开着的
  • 确认实例状态是running,而且“状态检查”显示通过
  • 试试ping实例的公网IP,如果ping不通,基本就是安全组或子网路由的问题

4. 检查子网的路由表

如果实例在私有子网,得通过NAT网关才能连公网;如果是公有子网,路由表里必须有指向互联网网关(IGW)的路由条目,不然实例根本出不了网

5. 看系统日志找深层问题

要是以上都排查过还是连不上,去EC2控制台看实例的系统日志,看看有没有启动失败、SSH服务异常这类信息,能帮你定位更隐蔽的问题


内容的提问来源于stack exchange,提问作者cbhangale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:02:52