广告位

云服务器免费使用CentOS7忘记root密码重置方法

频道: 日期: 浏览:6

海外直播云服务器选择

在日常运维中,难免会遇到这种情况:服务器是自己的,机房/控制台也能进,但就是 root 密码忘了。在 CentOS 7 中,可以通过修改 Grub 启动参数、进入特殊模式来重置 root 密码,而不是重装系统。

注意:

该方法适用于物理机KVM/VMware 等虚拟机,前提是你有控制台(VNC/虚机控制台/IDRAC/iLO 等)权限。对于云服务器(如阿里云、腾讯云、AWS 等),一般有各自的控制台重置密码/救援模式,不一定完全相同。

下面以CentOS 7.x为例,完整演示忘记 root 密码后的重置步骤。

一、重启服务器,进入 Grub 引导菜单

重启服务器:reboot或在控制台上直接点击重启(如果完全登不进去,就只能通过云控制台或远控面板强制重启)。在系统开机引导时,当出现Grub 菜单界面(通常会显示 CentOS Linux 的启动选项)时,用键盘选中默认启动项(通常已经高亮),按下键盘上的:e 键(edit,编辑启动参数)如果系统直接闪过进入启动界面,看不到菜单:可以在启动初期按 Esc 或 Shift,让 Grub 菜单显示出来。或在虚拟机设置里开启显示引导菜单。

二、在 Grub 中修改启动参数

进入编辑界面后:

找到一行以 linux16 开头的内容,类似:linux16 /vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rhgb quiet LANG=en_US.UTF-8在这一行里做两个关键修改:把里面的 ro(只读)改为rw(读写)。在这一行的末尾添加:init=/sysroot/bin/sh常见写法示例(只要参数顺序大致正常即可):linux16 /vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root rw init=/sysroot/bin/sh说明:rw:允许根文件系统读写,这样才能修改密码文件。init=/sysroot/bin/sh:使用 /sysroot/bin/sh 作为 init 程序,系统会直接进入一个 shell,而不是正常启动。修改完成后,不要按 Enter,而是按:Ctrl + X让系统按当前修改后的参数启动。

三、进入救援 shell 环境并切 root 环境

如果操作正确,系统不会正常启动,而是进入一个简易的命令行界面,类似:

云服务器虚拟化

sh-4.2

此时的根目录实际上挂载在 /sysroot 下,我们需要 chroot 进去:

切换到真实系统根目录环境:chroot /sysroot确认根目录是读写挂载(一般上一步 rw 已经生效,可以再执行一遍):mount -o remount,rw /

此时你已经等同于进入了原系统的 root 环境。

四、执行 root 密码重置

在 chroot 环境中,直接使用 passwd 命令修改 root 密码:

passwdroot

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

Changingpassword for user root.Newpassword:Retypenew password:passwd:all authentication tokens updated successfully.

看到 updated successfully 即说明密码重置成功。

五、处理 SELinux(非常关键,别跳过)

CentOS 7 默认 SELinux 多数为 enforcing,我们刚才是以特殊方式启动系统并修改了 shadow 等文件,如果不处理 SELinux 标签,很容易出现:

重启后 root 无法登录/bin/bash 或其它关键文件提示权限错误

为避免这类情况,强烈建议多做一步:让系统重启后自动重新打 SELinux 标签:

vps是云服务器吗

touch/.autorelabel

这个文件的作用是:系统下次正常启动时,自动对整个系统文件做一次 SELinux relabel(视磁盘大小,时间可能比较久)。

六、退出 chroot 并重启系统

退出 chroot 环境:exit再退出一次救援 shell(如果还在),或直接重启:reboot -f-f 表示强制重启,不走正常关机流程。

七、首次启动的 SELinux relabel 过程(可能会比较慢)

如果你刚才做了 touch /.autorelabel,在系统正常启动时,可能会看到类似:

***Warning--SELinuxrelabelisrequired. ***

这是正常现象,说明系统正在重新打标签:

期间磁盘会有大量 IO,耗时视磁盘大小与文件数量而定,少则几分钟,多则几十分钟。不要以为系统卡死了就强制重启,耐心等待完成。

完成后系统会自动重启一次,然后就可以用新的 root 密码正常登录了。

八、登录验证

系统恢复正常启动后:

在控制台/SSH 中使用新密码登录:Username: root Password: <你刚才设置的新密码>成功登录后建议立刻做几件事:确认系统时间、服务是否正常:date systemctl status sshd如果是生产环境,建议检查下关键业务服务状态。建议配置 SSH 公钥登录,减少对密码的依赖。

九、常见问题与排查

1. Grub 编辑后启动还是正常进入系统,没有进入 shell?

可能问题:

没有正确按 Ctrl + X,而是用的其他键。启动项不是当前使用的那一项。修改的不是 linux16 那一行。

建议重启再来一次,注意检查:

是否确实把 ro 改成了 rw;是否完整写了:init=/sysroot/bin/sh。

2. 忘记执行touch /.autorelabel,重启后 root 无法登录?

表现为:

密码输入正确,但登录失败;或某些命令提示权限问题。再按照本文流程重新进一次救援模式, chroot /sysroot 后补上:touch/.autorelabelexitreboot-f

等待 SELinux relabel 完成。

3. 云服务器(阿里云、腾讯云、AWS)无法通过 Grub 重置 root 密码?

很多云厂商会对 Grub 做额外保护,或者通过快照/系统盘挂载到其他实例来修改密码。这时建议:

查阅对应云厂商的官方文档,搜索重置实例密码或系统盘挂载恢复;或用救援模式(Rescue Mode),把系统盘挂载到救援系统中修改 /etc/shadow。

云服务器免费版

关键词: