本地Python代码连接AWS EC2实例报WinError 10060连接超时如何解决
报错排查及解决步骤
- 首先排查EC2安全组配置:进入AWS控制台对应EC2实例的安全组设置,在入站规则中添加允许
TCP 60001端口的访问规则,测试阶段可临时将源地址设为0.0.0.0/0,正式使用时改为你本地网络的公网IP降低安全风险。 - 检查EC2实例操作系统防火墙:如果是Debian/Ubuntu系统,执行
sudo ufw allow 60001/tcp开放端口;如果是CentOS/RHEL系统,执行firewall-cmd --add-port=60001/tcp --permanent && firewall-cmd --reload开放端口。 - 修正服务端代码绑定逻辑:你当前使用
socket.gethostbyaddr("3.129.88.101")[0]获取的是EC2内网私网地址,很可能无法承接公网请求,直接将绑定地址改为0.0.0.0即可,修改后绑定代码为tcpsock.bind(("0.0.0.0", TCP_PORT))。 - 先做基础连通性验证:本地打开终端/powershell,执行
Test-NetConnection 3.129.88.101 -Port 60001(Windows)或者telnet 3.129.88.101 60001验证端口连通性,这一步不通的话优先排查网络配置,不用检查代码逻辑。 - 其他基础校验项:确认EC2实例处于运行状态、公网IP
3.129.88.101未发生变更(未配置弹性IP的实例重启后公网IP会更换)、服务端代码已正常启动且打印出Waiting for incoming connections...日志、代码使用Python2运行(你提供的代码为Python2语法,使用Python3运行会直接启动失败)。
内容的提问来源于stack exchange,提问作者SwaggerLagger10
相关产品推荐
相关产品推荐

