Linux 忘记密码解决方法
通过 GRUB 进入单用户/rescue 模式重设 root 密码,以及云主机上的替代做法。
Key Points本地机器靠 GRUB 改内核参数进 rescue 或 rd.break 重置密码;云主机直接重置磁盘或走控制台。
RHEL / CentOS 系:rd.break
- 开机在 GRUB 菜单按
e编辑启动项 - 在
linux行末尾加rd.break,按Ctrl+X启动 - 系统进入 switch_root 前的紧急 shell,根分区挂在
/sysroot(只读) - 重新挂载为可写并改密码
Bash
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel # SELinux 开启时必须,否则改完登不进去
exit
rebootDebian / Ubuntu 系:recovery mode
Bash
# GRUB 菜单选 "Advanced options" → "recovery mode" → "root Drop to root shell prompt"
mount -o remount,rw /
passwd root
exit
reboot云主机怎么办
| Provider feature | How |
|---|---|
| Reset password | Console → 实例 → 重置密码(需重启) |
| VNC console | 网页终端,可按上面步骤操作 |
| Detach disk | 挂到另一台机器上改 /etc/shadow |
Anyone with physical access can reset the root password by design. Real protection is disk encryption (LUKS) plus a firmware password — not hoping the password cannot be changed.
预防
- 给自己建普通账号 + sudo,别只用 root
- 把密码存进密码管理器
- 云主机优先用 SSH 密钥,密码只作后备
RHEL / CentOS 系:rd.break
- 开机在 GRUB 菜单按
e编辑启动项 - 在
linux行末尾加rd.break,按Ctrl+X启动 - 系统进入 switch_root 前的紧急 shell,根分区挂在
/sysroot(只读) - 重新挂载为可写并改密码
Bash
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel # SELinux 开启时必须,否则改完登不进去
exit
rebootDebian / Ubuntu 系:recovery mode
Bash
# GRUB 菜单选 "Advanced options" → "recovery mode" → "root Drop to root shell prompt"
mount -o remount,rw /
passwd root
exit
reboot云主机怎么办
| 云厂商功能 | 做法 |
|---|---|
| 重置密码 | 控制台 → 实例 → 重置密码(需重启) |
| VNC 控制台 | 网页终端,可按上面步骤操作 |
| 卸载磁盘 | 挂到另一台机器上改 /etc/shadow |
能物理接触机器的人就能改 root 密码——这是设计使然。真正的防护是磁盘加密(LUKS)和 BIOS 密码,不是指望「密码改不了」。
预防
- 给自己建普通账号 + sudo,别只用 root
- 把密码存进密码管理器
- 云主机优先用 SSH 密钥,密码只作后备