分步故障排除指南——SSH 无法连接到 EC2
2026-05-18
一些初次使用 AWS 的用户在通过 SSH 连接到 Linux EC2 实例时可能会遇到问题。别担心,本文将帮助您排查常见原因!
SSH 无法连接到 EC2 的原因
无法通过 SSH 连接到 EC2 的常见原因通常分为两类:连接超时和权限错误。
连接超时:错误消息通常包含“connect”等关键词,例如“Connection Timed Out”(连接超时)。这通常是由于网络配置不当所致,需要检查IP地址、安全组、访问控制列表(ACL)、子网路由表以及用户的网络环境。
权限错误:错误消息通常包含“权限”或“密钥”等关键词,例如“拒绝访问”或有关密钥未注册或不存在的警告。这通常是由于密钥或用户名使用不当所致。
连接超时
问题描述
您已创建并启动了一个 Amazon EC2 Linux 实例,但无法使用 SSH 或 PuTTY 等工具连接到该实例。在尝试连接时,您遇到连接超时错误,例如“网络错误:连接超时”或“连接到 [实例] 时出错,原因:→ 连接超时:connect”。此问题通常由安全组、路由表和网络 ACL 等网络组件的配置不当引起。请按照以下故障排除步骤检查您的网络环境。
故障排除
1. 检查安全组
在 EC2 实例的安全组中,确保允许 SSH 协议(默认端口 22)的入站流量。
如果在办公局域网中,您的IP地址可能不是固定的,每次连接时都可能发生变化。在这种情况下,建议将来源设置为办公网络的IP地址段,而不是单个IP地址。
注意:默认情况下,该实例也无法被 ping 通。如需对该实例执行 ping 操作,您需要以类似方式添加一条允许 ICMP 协议的规则。
打开 Amazon EC2 控制台。
在导航窗格中,选择实例。
找到您要通过 SSH 连接的 EC2 实例。
在屏幕底部的描述选项卡中,选择您要连接的 EC2 实例的安全组。
在屏幕底部窗格中的入站选项卡中,确保已设置一条规则,允许从您当前的公网 IP 地址访问 SSH。如果您的设备所使用的 IP 地址未列在其中,请单击编辑,然后选择添加规则。
对于源地址,请选择您当前的IP地址。“0.0.0.0/0”表示对所有IP地址开放。
选择保存。
2. 检查子网是否为公有子网
公有子网是指允许互联网访问的子网。如果您的 EC2 实例位于私有子网中,则外部互联网无法主动连接,SSH 连接将失败。
打开 Amazon VPC 控制台。
在导航窗格中,选择路由表,然后从列表中选择您的VPC路由表。
在路由选项卡中,确保存在一条指向互联网网关的默认路由。
如果没有,请从导航窗格中选择互联网网关,然后复制您的互联网网关 ID。如果没有互联网网关,请创建一个并将其附加到您的 VPC。请务必复制新创建的互联网网关 ID。
返回路由表,然后选择路由选项卡。
编辑并创建一条路由,将“0.0.0.0/0”指向您的互联网网关ID。
保存路由表。
3. 检查子网的网络访问控制列表(ACL)
ACL 是子网级别的防火墙。默认网络 ACL 允许所有入站和出站流量。如果您尚未对 ACL 进行任何更改,请跳过此步骤。
打开 Amazon VPC 控制台。
在导航窗格中,选择子网,然后选择您的子网。
在描述选项卡中,找到网络ACL,然后选择其ID(acl-xxxxxxxx)。
选择网络访问控制列表(ACL)。对于入站规则,确认规则是否允许来自您计算机的流量;若不允许,请删除或修改阻止该流量的规则。对于出站规则,确认规则是否允许流向您计算机的流量;若不允许,请删除或修改阻止该流量的规则。
4. 确认IP地址是否已更改
在导航窗格中,选择“实例”。
找到您要通过 SSH 连接的 EC2 实例。
在屏幕底部的描述标签页中,检查公网IP是否与您正在使用的IP地址一致。如果IP地址已更改,请使用新的IP地址。
5. 检查AMI
请检查您当前使用的 AMI 是否来自快速入门(Quick Start)或AWS Marketplace。除非您能确定某款 AMI 的安全性,否则请尽量避免使用社区镜像(Community Images)。社区镜像是由个人发布的,AWS 无法对其进行监控。部分社区镜像可能实施了特殊的安全管理与访问控制机制,从而禁止直接通过 SSH 登录。若遇到此类情况,请停止当前服务器,并使用官方镜像或 Marketplace 镜像启动一台新服务器。
6. 检查实例负载
服务器可能负载过高,导致 sshd 服务出现故障,无法接受新的 SSH 请求。可通过观察 CloudWatch 指标来确认该问题。此时最简单的解决方法是尝试重启实例,查看问题是否得以解决。若问题仍然存在,请使用 Systems Manager 的 Session Manager 工具建立会话,并执行命令终止不必要的资源进程。
7. 其他原因
如果上述所有步骤均已检查且无问题,请检查以下原因:
22端口被屏蔽:如果您身处办公室或酒店的公共Wi-Fi区域,请尝试连接其他网络,以确认该公共网络是否屏蔽了22端口。
检查您的计算机防火墙是否阻止了 22 号端口。
权限问题
问题描述
您已创建并启动了一个 EC2 实例,但无法通过 SSH 连接到该实例,错误信息如“主机密钥未在 [目录] 中找到”、“权限被拒绝(公钥)”或“身份验证失败,权限被拒绝”。此问题通常由密钥或用户名不正确导致。以下是具体的排查方法。
故障排除
1. 检查密钥对是否正确
每个 EC2 实例在启动时都会关联一个密钥。该密钥是首次登录 EC2 实例的唯一方式,且只能在实例启动前下载。首先,请选择您的实例,并在描述页面中核对密钥对名称,以确保您使用的是正确的密钥。
如果此项为空,则无法通过 SSH 登录该实例。请停止该实例,启动一个新实例,并记得下载密钥。
2. 用户名错误
如果您使用的是官方镜像,正确的用户名如下:
AMI | 用户名 |
Amazon Linux 2 或 Amazon Linux AMI | ec2-user |
CentOS AMI | CentOS |
Debian AMI | 管理员或根用户 |
Fedora AMI | ec2-user 或 fedora |
RHEL AMI | ec2-user 或 root |
SUSE AMI | ec2-user 或 root |
Ubuntu AMI | Ubuntu |
如果是 AMI 的社区版本,则无法保证用户名的有效性。请联络 AMI 创建者,或切换至官方 AMI。
3. 检查您的密钥格式
通常,SSH 所需的密钥为 “pem” 格式。若您使用 Windows 计算机并通过 PuTTY 登录,则需将密钥从 “pem” 格式转换为 “ppk” 格式。
4. 检查关键权限
如果遇到错误:“bad permissions: ignore key: my_private_key.pem Permission denied (publickey)”。
出现这种情况是因为您的私钥文件权限过高,导致任何用户都可以读取和写入该文件。为了保护您的私钥文件,SSH 将忽略此密钥。解决方法是使用以下命令修改密钥文件的权限:
chmod 400 my_private_key.pem
5. 与 known_host 相关的错误
此情况通常出现在切换弹性公网IP(EIP)时,例如:EIP 原本绑定在使用密钥 A 的机器 A 上;当该 EIP 切换至使用密钥 B 的机器 B 时,该 IP 对应的 known_hosts 记录便不再匹配。
解决方法是打开 known_hosts 文件(Linux/mac 地址:~/.ssh/known_hosts),然后删除该 IP 对应的记录。
选择安全的 EC2 备份解决方案
Vinchin 备份与恢复 支持 AWS EC2 备份,用户可通过其 AWS 访问密钥 ID 添加实例,并配置完整备份、增量备份或差异备份。它提供灵活的恢复选项,包括整台实例、单个卷以及特定文件,并支持直接恢复至其他虚拟化平台。该方案集成 Amazon S3,实现安全归档,同时还支持 虚拟机到虚拟机(V2V)迁移 ,可将工作负载迁移至 VMware、Hyper-V 和 Proxmox 等平台。其直观易用的界面大幅简化了备份管理与配置流程。
使用 Vinchin 备份与恢复工具备份 EC2 实例,请按以下步骤操作:
1. 选择要备份的 EC2 实例。

2. 选择备份目标位置。

3. 选择备份策略。

4. 审核并提交任务。

立即开始 Vinchin 备份与恢复服务为期 60 天的免费试用,亲身体验其安全、资源高效的数据备份解决方案。或者,联系我们,获取专为您的 IT 需求定制的方案。
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
总结
通过以上步骤解决潜在问题,您可快速修复故障并重新访问您的实例。请始终遵循良好的安全实践,例如仅允许受信任的IP地址访问,并定期检查安全组及网络设置。