重置丢失的 root 密码

发布于 21/08/2026 更新于 06/10/2026 82 次浏览
Mot de passe Console VPS Linux Dépannage

root 密码永远无法被「找回」:它不会以明文形式存储,即使在我们这里也是如此。它只能被替换。下面的所有方法都基于同一个思路:临时获得对机器的特权访问,然后执行 passwd。

这些方法按从简单到复杂的顺序排列。请按顺序尝试。

如何在客户中心重置丢失的 root 密码?

这是常规方式,且无需事先访问机器。

  1. 在客户中心打开您的服务。
  2. 在 访问与安全选项卡中输入新密码并确认。
  3. 重启机器。

在 KVM VPS 上,重启并非可选项:新密码会被写入 VM 的初始化配置,并且只在下次启动时读取。如果不重启,什么都不会改变。

此方法可以解决绝大多数情况。只有在重启后新密码仍被拒绝时,才需要使用下一种方法;这种情况会出现在安装后初始化配置被禁用或移除的机器上。

如何通过 GRUB 和救援控制台重置 root 密码?

服务的 控制台 选项卡会打开机器的屏幕,就像您带着键盘坐在机器前一样。当 SSH 无法使用时,这是唯一仍然有效的访问方式。

原理:在启动时,让内核启动一个 shell 来代替完整的系统。这样无需身份验证即可获得 root 访问权限,用于更改密码。

第 1 步:显示 GRUB 菜单

打开 控制台,然后从客户中心重启机器,并保持控制台可见。在启动的最初阶段,按住 Shift 或多次按 Esc,以调出 GRUB 菜单。

这是最棘手的环节:时间窗口很短。不妨多试几次。

第 2 步:修改启动行

在菜单中:

  1. 选择常用的 Linux 启动项;
  2. 按 e 进行编辑;
  3. 找到以 linux、linux16 或 linuxefi 开头的那一行;
  4. 在该行的末尾添加:
rw init=/bin/bash

如果该行中已包含 ro,请将其替换为 rw。

按 Ctrl + X(或 F10)启动。

此修改是临时的:它不会被保存,下次重启后即会失效。

第 3 步:确认根分区可写

您会看到一个命令提示符。请检查:

mount | grep " on / "

如果看到 ro,请以可写方式重新挂载根分区:

mount -o remount,rw /

如果跳过此步骤,passwd 将会失败:在只读系统上无法修改密码文件。

第 4 步:更改密码

passwd root

输入并确认。在 Ubuntu 上,root 账户通常默认处于锁定状态:请改为重置您的管理员用户的密码。

passwd username

第 5 步:正常重启

由于系统并非正常启动,常用命令可能没有响应。请先尝试:

sync
exec /sbin/init

如果机器没有重新启动:

sync
reboot -f

sync 并非可有可无:它会强制将仍在内存中的修改写入磁盘。如果没有它,密码更改可能会在重启时丢失。

在 Rocky、AlmaLinux、Fedora 或 RHEL 上该如何操作?

在这些发行版上,推荐的方法是使用 rd.break 而不是 init=/bin/bash。在 GRUB 中,在内核行的末尾添加:

rd.break

然后,在获得的 shell 中执行:

mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot

/.autorelabel 文件会要求 SELinux 在下次启动时重新计算安全标签。如果没有它,即使密码正确,系统也可能拒绝登录。这次启动会比平时更久,这是正常现象。

如果重置失败怎么办?

首先确定确切的症状:以下每种情况都有明确的原因和已知的解决方法。

passwd: Authentication token manipulation error

根分区以只读方式挂载。请重新执行:

mount -o remount,rw /

密码正确,但 SSH 拒绝 root 登录

问题不在密码:SSH 配置禁止 root 直接登录。请在控制台中检查:

grep -E "^PermitRootLogin|^PasswordAuthentication" /etc/ssh/sshd_config

请改用具有 sudo 权限的用户登录。这本身也是更推荐的配置。

GRUB 菜单始终不出现

某些镜像启动速度太快,键盘来不及介入。这种情况下,请提交工单:我们可以对机器进行干预。客户中心不提供挂载外部救援镜像的功能。

您更希望从零开始

如果机器上还没有数据,使用 重新安装选项卡比任何启动操作都更快、更安全。它会清空磁盘,并使用您选择的密码重新安装系统。

恢复访问后应检查什么?

丢失密码是一个检查是否有其他人进入过系统的好时机。

find /root /home -name authorized_keys -type f -print
last -a

第一条命令会列出已授权的 SSH 密钥:任何您不认识的密钥都应删除。第二条命令会显示最近的登录记录。

然后更新系统,并改用 SSH 密钥认证,从此不再依赖密码。

这篇文章对您有帮助吗?