无法SSH连接使用Boto创建的AWS EC2实例问题咨询
问题分析与解决方案
核心问题:创建实例时未关联新密钥对
你当前的Boto创建实例代码缺少KeyName参数,导致新启动的EC2实例没有和你下载的新.pem密钥对绑定,这是SSH连接挂起的主要原因之一。
修改Boto创建实例代码
在create_instances方法中添加KeyName参数,值为你在EC2控制台创建的密钥对的名称(注意是控制台显示的密钥对名称,不是本地.pem文件的文件名):
instances = ec2.create_instances( ImageId=image_id, MinCount=1, MaxCount=num_instances, InstanceType=instance_type, KeyName='你的密钥对名称', # 添加这一行 IamInstanceProfile={ 'Name': 'SSMInstanceProfile' }, Placement={'AvailabilityZone': availability_zone} )
关于SSMInstanceProfile与.pem的关联
不需要将SSMInstanceProfile和.pem密钥关联。SSMInstanceProfile是用于AWS Systems Manager管理实例的权限配置,和SSH连接使用的密钥对没有直接关系,SSH连接只依赖实例创建时绑定的密钥对、安全组规则以及网络可达性。
额外排查点(SSH挂起的其他可能原因)
- 安全组规则:确保实例所属的安全组允许入站的22端口(建议限制为你的本地IP,而非全开放)。
- 公网IP配置:确认实例已分配公网IPv4地址,若没有,可手动分配弹性IP,或检查实例所在子网的“自动分配公网IP”是否开启。
- 本地.pem文件权限:执行
chmod 400 /path/to/private/key.pem,SSH要求私钥文件权限不能过宽,否则会拒绝连接。
内容的提问来源于stack exchange,提问作者intrigued_66
相关产品推荐
相关产品推荐

