无法通过SSH访问EC2免费套餐(t2.micro)实例的问题求助
EC2实例SSH及EC2 Instance Connect连接失败排查方案
一、安全组配置检查
- 入站规则必须包含:
- SSH(TCP 22端口):添加你的本地公网IP作为源(可通过搜索引擎查自己的公网IP),测试阶段可临时允许
0.0.0.0/0(测试完成后务必改回指定IP,避免安全风险) - EC2 Instance Connect依赖SSH端口,上述规则可覆盖其连接需求
- SSH(TCP 22端口):添加你的本地公网IP作为源(可通过搜索引擎查自己的公网IP),测试阶段可临时允许
- 出站规则保持默认的
0.0.0.0/0允许所有即可,确保实例能正常访问外部资源
二、网络ACL配置检查
- 入站规则:添加允许TCP 22端口的规则,源地址包含你的本地IP,优先级设为100左右(高于默认的拒绝规则)
- 出站规则:添加允许TCP 1024-65535端口的规则,目的地址为
0.0.0.0/0,确保SSH连接的响应流量能正常返回
三、实例及系统层面检查
- 确认实例已分配公网IPv4地址,且实例状态为
running,系统状态检查显示正常(在EC2控制台实例详情页查看) - 检查操作系统的EC2 Instance Connect包:
- Amazon Linux 2:执行
sudo yum install ec2-instance-connect -y确保包已安装 - Ubuntu:执行
sudo apt-get install ec2-instance-connect -y确保包已安装
- Amazon Linux 2:执行
- 确认SSH服务正在运行:
- Amazon Linux 2/CentOS:
sudo systemctl status sshd,若未启动则执行sudo systemctl start sshd && sudo systemctl enable sshd - Ubuntu:
sudo systemctl status ssh,若未启动则执行sudo systemctl start ssh && sudo systemctl enable ssh
- Amazon Linux 2/CentOS:
- 检查系统防火墙:
- firewalld(Amazon Linux 2/CentOS):执行
sudo firewall-cmd --add-service=ssh --permanent && sudo firewall-cmd --reload开放SSH端口 - iptables:确保没有拒绝22端口入站流量的规则,可临时清空规则测试:
sudo iptables -F
- firewalld(Amazon Linux 2/CentOS):执行
四、EC2 Instance Connect额外检查
- 确认你的IAM用户拥有
ec2-instance-connect:SendSSHPublicKey权限,权限范围需包含目标EC2实例的资源ARN - 若实例在私有子网,需确保子网配置了NAT网关,且路由表有指向NAT网关的路由,让实例能出站访问AWS的EC2 Instance Connect服务
- 若实例在公有子网,确认路由表有指向Internet Gateway的路由,确保实例能正常访问外部
五、快速测试方法
- 用telnet测试端口连通性:
telnet <实例公网IP> 22,若返回类似Escape character is '^]'.说明网络通路正常,问题在系统或密钥;若超时则重点排查安全组、网络ACL、路由 - PuTTY连接时,确认使用正确的用户名:Amazon Linux 2用
ec2-user,Ubuntu用ubuntu,CentOS用centos,同时确保密钥是通过PuTTYgen转换后的.ppk文件
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

