Ubuntu 忘记 root 密码重置方法大全

在 Ubuntu 系统中,如果忘记了 root 密码或者需要重新启用 root 账号,可以通过 恢复模式(Recovery Mode)Grub 启动参数 来重置密码,而无需重装系统。

前提条件:

你需要有 物理机/虚拟机控制台 权限(如 VMware/KVM 控制台、iDRAC、iLO、云平台 VNC 等)。对于公有云(阿里云、腾讯云、AWS 等),一般推荐优先使用云厂商自带的密码重置/救援模式。

下面以常见的 Ubuntu 16.04 / 18.04 / 20.04 / 22.04 为例说明操作方法。


一、确认 Ubuntu 的 root 使用方式

Ubuntu 默认是 不直接启用 root 登录 的,一般做法是:

  • 使用普通用户,通过 sudo 提升权限;
  • 默认 root 是有密码的,但不推荐直接用 root 登陆。

你可能遇到的几种情况:

  1. 忘记了能 sudo 的普通用户密码;
  2. 忘记 root 密码,但希望重新启用 root 登录;
  3. 只有一个账号,但密码不记得了。

下面的方法都可以用来在系统层面直接修改 /etc/shadow 中的密码,从而重置 root 或某个用户的密码。


二、方法一:通过 Recovery Mode 重置 root 密码(推荐)

这是最常用、最安全的一种方式,适合大多数 Ubuntu 安装。

1. 重启系统,进入 Grub 菜单

  1. 重启服务器:
  2. <BASH>
  3. reboot
  4. 如果本身进不了系统,可以在控制台上直接点击“重启”。
  5. 在系统刚启动时,当屏幕上出现开机 LOGO 或闪黑屏的时候,立刻按住或反复按:
  6. BIOS 机型:Shift
  7. UEFI 机型:Esc
  8. 直到出现 Grub 菜单,能看到类似:
  9. <TEXT>
  10. Ubuntu Advanced options for Ubuntu

如果 Ubuntu 是唯一系统且平时不显示 Grub 菜单,这一步尤其重大。


2. 进入高级选项 / 恢复模式

  1. 在 Grub 菜单中,用方向键选择:
  2. <TEXT>
  3. Advanced options for Ubuntu
  4. 然后按 Enter。
  5. 在“高级选项”菜单中,选择一项带有 (recovery mode) 字样的内核启动项,列如:
  6. <TEXT>
  7. Ubuntu, with Linux 5.4.0-xx-generic (recovery mode)
  8. 然后按 Enter。

系统会以恢复模式启动,最终进入一个带菜单的“恢复界面”。


3. 选择 root 模式(root shell)

等待恢复模式加载完毕后,会看到一个文本菜单,选项类似:

<TEXT>
resume    Resume normal boot
clean     Try to make free space
dpkg      Repair broken packages
fsck      Check all file systems
root      Drop to root shell prompt
  1. 选择:
  2. <TEXT>
  3. root Drop to root shell prompt
  4. 输入回车。
  5. 这时会进入一个 root shell,提示类似:
  6. <TEXT>
  7. root@hostname:~#

注意:此时根文件系统一般是 只读挂载 的,需要改成读写才能修改密码。


4. 将根文件系统 remount 为读写

在 root shell 中执行:

<BASH>
mount -o remount,rw /

无需任何输出即表明成功。
你可以用 mount | grep ' / ' 检查当前挂载状态。


5. 重置 root 密码或普通用户密码

5.1 重置 root 密码(启用/修改 root)

直接执行:

<BASH>
passwd root

按提示输入新密码两次,例如:

<TEXT>
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

看到 updated successfully 就说明 root 密码已修改完成。

5.2 重置普通用户密码

假设你的普通用户是 ubuntu 或 admin,执行:

<BASH>
passwd ubuntu
# 或
passwd admin

操作流程和修改 root 密码一样,输入新密码两次即可。


6. 退出并继续正常启动

密码更改完成后:

  1. 输入:
  2. <BASH>
  3. exit
  4. 返回到 recovery 菜单。
  5. 在菜单中选择:
  6. <TEXT>
  7. resume Resume normal boot
  8. 回车,让系统继续正常启动。

系统启动完成后,你可以直接用新密码登录:

  • 如果是普通用户:用新密码登录,再使用 sudo。
  • 如果要直接用 root:先允许 root 登录(见后文设置)。

三、方法二:通过修改 Grub 启动参数重置密码(适用于无 Recovery Mode)

在部分最小化安装或特殊环境下,可能没有 recovery mode 选项,这时可以通过 Grub 临时改启动参数,进入单用户/救援模式重置密码。

1. 进入 Grub 菜单并编辑启动项

重启系统,按 Shift 或 Esc 进入 Grub 菜单,选中默认的 Ubuntu 启动项,按下:

<TEXT>
e

进入编辑模式。

2. 修改内核启动参数

在编辑页面中:

  1. 找到以 linux 开头的那一行,一般类似:
  2. <TEXT>
  3. linux /boot/vmlinuz-5.4.0-xx-generic root=UUID=xxx ro quiet splash $vt_handoff
  4. 把其中的 ro 改为 rw(可选,但提议):
  5. <TEXT>
  6. … root=UUID=xxx rw quiet splash …
  7. 在这一行的 末尾 加上:
  8. <TEXT>
  9. init=/bin/bash

最终类似这样:

<TEXT>
linux   /boot/vmlinuz-5.4.0-xx-generic root=UUID=xxx rw init=/bin/bash

3. 启动到 bash 环境

按:

<TEXT>
Ctrl + X

或 F10,使用当前参数启动。
如果成功,将会直接进入一个 bash shell,提示类似:

<TEXT>
root@(none):/#

此时系统还未完全启动,只是跑了一个 root shell。


4. 将根文件系统挂载为读写

执行:

<BASH>
mount -o remount,rw /

让根文件系统可写。


5. 重置 root 密码或普通用户密码

步骤与前面一致:

  • 重置 root:
  • <BASH>
  • passwd root
  • 重置用户:
  • <BASH>
  • passwd ubuntu

按提示输入两次新密码,看到 password updated successfully 即完成。


6. 同步数据并重启

重启前执行一次同步:

<BASH>
sync
reboot -f

系统会重新启动,并回到正常启动流程。
随后你就可以使用新密码登录系统。


四、启用 root 远程登录(如有需要)

在 Ubuntu 中,即使你设置了 root 密码,默认情况下 SSH 是禁止 root 密码登录 的。
如果你的确 有运维需求希望允许 root 远程登录(必须超级注意安全!),可以这样做:

  1. 编辑 SSH 配置:
  2. <BASH>
  3. sudo vi /etc/ssh/sshd_config
  4. 找到(或新增)如下配置:
  5. <TEXT>
  6. PermitRootLogin yes PasswordAuthentication yes
  7. 保存退出后重启 SSH:
  8. <BASH>
  9. sudo systemctl restart ssh

这样就可以使用 root 账号和新密码通过 SSH 登录了。
但从安全角度强烈提议:

  • 优先使用普通用户 + sudo;
  • 尽量改用 SSH 公钥认证,禁用密码登录:
  • <TEXT>
  • PasswordAuthentication no

五、常见问题与排查

1. 启动时看不到 Grub 菜单?

可能缘由:

  • 机器太快,Grub 菜单瞬间跳过;
  • Ubuntu 是单系统安装,Grub 默认隐藏。

解决办法:

  • 重启时在 BIOS/UEFI 自检过后,重复按 Shift(BIOS)或 按住 Esc(UEFI),直到菜单出现;
  • 某些云平台会提供“进入救援模式”或“VNC 控制台”,可以利用这些方式进入 Grub。

2. 修改 Grub 后启动依然进入正常系统,没有 bash 或 root shell?

请检查:

  • 是否的确 修改了以 linux 开头的那一行;
  • init=/bin/bash 是否写在这一行的末尾;
  • Ctrl + X 或 F10 是否被正确按下用于“以当前参数启动”。

如有问题,重启后重新尝试。


3. 重置密码后依旧登录失败?

常见缘由:

  1. 键盘布局不一致(特别是特殊符号),导致输入密码时实际内容不同;
  2. 登录的是错误的用户;
  3. SSH 禁止密码登录,导致即便密码正确也无法登录。

排查提议:

  • 在本地控制台尝试登录;
  • 使用一个简单但临时的密码测试(列如仅字母数字);
  • 检查 /etc/ssh/sshd_config 中是否关闭了密码登录。
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
双眼睛大眼皮的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容