AWS EC2 登不上:密钥丢了、密码忘了还能救吗
AWS EC2 登不上,是云服务器用户最常遇到的紧急情况之一。和国内云厂商「控制台点一下就能重置 Linux 密码」的完整体验不同,AWS 把密钥和密码的控制权完全交给用户,一旦密钥文件丢失或密码遗忘,就需要换一种思路来处理。本文按「先排除简单错误、再按系统分流、最后兜底」的顺序,把可行路径讲清楚,尽量让你少走弯路。
先排除:八成问题不在密钥
在动手挂盘、重建实例之前,先花五分钟确认下面几件事,很多「登不上」其实根本不是密钥问题。
- 安全组规则:确认 22(Linux SSH)或 3389(Windows RDP)的入站来源是不是你当前的公网 IP。家用宽带 IP 会变,公司网络、咖啡厅 Wi-Fi 也常常被挡。具体端口放行方法见安全组配置。
- 用户名是否正确:不同镜像的默认登录名不一样,用错用户名会直接报
Permission denied。常见对照如下:
| 镜像系统 | 默认用户名 |
|---|---|
| Amazon Linux | ec2-user |
| Ubuntu | ubuntu |
| Debian | admin |
| CentOS / RHEL | centos 或 ec2-user |
| Windows | Administrator |
- 密钥文件权限:本地私钥文件权限必须是 400,否则 SSH 会拒绝使用。Linux/macOS 执行
chmod 400 your-key.pem;Windows 下要确认文件没有被其他程序占用、也没有继承多余权限。 - 确认密钥归属:手里这把
.pem是不是这台实例创建时下载的那一把?同一账号下多台机器、多把密钥很容易混淆,可以对比创建时间。
如果以上都排除了,才进入真正的「密钥丢失」处理流程。四种恢复思路(挂载系统盘改授权、SSM、快照重建、从 AMI 重开)在密钥丢失恢复里有完整步骤,建议对照操作。
Linux:密钥丢了怎么救
AWS 不提供「一键重置 Linux 密码」的按钮,核心思路是把系统盘从故障实例上摘下来,挂到一台能正常登录的临时实例上,修改授权文件后再挂回去。要点:
- 停止故障实例(不要终止),在卷列表里找到它的根卷并记下设备名。
- 分离该卷,挂载到同可用区一台可正常登录的临时实例上。
- 登录临时实例,挂载该卷,写入你新生成的公钥到对应用户的
authorized_keys,或临时开启密码登录。 - 卸载、分离,再挂回原实例并启动,用新密钥登录。
如果实例已经配置了 SSM Agent 和实例角色,也可以直接通过 Session Manager 打开会话,无需 SSH 端口,这是最省事的路径。
Windows:密码忘了怎么办
Windows 实例的登录密码是加密保存在控制台里的,必须用创建实例时下载的那把密钥来解密获取。流程是:选中实例 → 连接 → RDP → 获取密码 → 上传私钥 → 解密。密钥还在,这一步就能拿到明文密码。
密钥也没了,就只能走和 Linux 类似的挂盘路线:把系统盘挂到临时实例上,替换或修改管理员密码相关配置,再挂回原实例。另外提醒一句,3389 端口不要对 0.0.0.0/0 全开,暴力破解扫描非常密集,建议限制到固定 IP。
常见问题
AWS EC2 登不上需要注意什么?
操作前先确认账号属于AWS对应站点,并备份关键数据或记录当前配置。按本文步骤完成后做一次验证。需要账号可申请账号,续费见自助充值。
出错后如何快速回滚或止损?
优先恢复到变更前的快照、镜像或原规则;若涉及计费或销毁类操作,先停止继续变更,再按官方控制台状态与工单路径处理。不确定时不要反复点击高危按钮。
没有对应云账号时怎么开始?
可先通过申请账号开通国际云账号,再用自助充值完成额度准备。新账号建议先完成 MFA、访问密钥收敛与费用告警,再部署业务。