使用boto3为EC2配置SSH入站流量授权失败问题求助
问题排查与修复方案
- 缺少IPv6段的SSH入站授权
你当前代码仅开放了IPv4地址段0.0.0.0/0的22端口访问权限,如果你本地网络环境优先使用IPv6地址访问EC2公网IP,就会出现连接被拒绝的情况。需要额外新增IPv6段的入站规则,在原有authorize_security_group_ingress调用后补充以下代码:
ec2.authorize_security_group_ingress( GroupId = security_group['GroupId'], IpProtocol = 'tcp', FromPort = 22, ToPort = 22, CidrIpv6 = '::/0' )
- 安全组规则同步延迟
AWS的安全组规则采用最终一致性模型,调用授权接口后立刻启动实例,可能出现规则还未完成全局同步的情况。可以在授权操作完成后增加短暂等待,代码示例:
import time # 安全组规则授权完成后等待2秒保证同步 time.sleep(2)
- 校验配置正确性
实例启动后可以在EC2控制台查看实例详情,确认两点:一是实例确实关联了代码创建的安全组,二是安全组入站规则中存在22端口对0.0.0.0/0、::/0开放的记录。 - SSH连接注意项
Ubuntu 20.04官方镜像默认的SSH登录用户是ubuntu,不要使用root、ec2-user等默认用户名尝试登录,同时确认本地使用的私钥和你代码中KeyName参数对应的密钥对匹配。
内容的提问来源于stack exchange,提问作者Vadim Kantorov
相关产品推荐
相关产品推荐

