忘记Linux服务器root密码后,不用重装系统,只要你能进入引导菜单或使用云控制台的救援功能,就能在几分钟内安全重置密码。
这件事我遇到过不止一次,第一次是在一台老旧的物理服务器上,密码忘了,业务还在跑,差点被吓懵,后来摸清了路子,其实就三步:选对入口、拿到root权限、改新密码,关键是你的服务器属于哪一类,决定了用哪种方式。
linux服务器root密码忘记了,重置前先分清这几种情况
先别急着敲命令,搞清楚服务器环境再动手,不同场景下,能用的工具完全不一样。
- 物理机或自建虚拟机:你有物理接触权限,能重启并按键盘进入GRUB引导界面,首选单用户模式。
- 云服务器:你无法直接插键盘,但云厂商通常提供网页版VNC终端和救援模式,也有现成的“重置密码”按钮。
- 已设置GRUB密码或磁盘加密:单用户模式会被拦住,需要救援模式或系统盘修复。
这里有一个容易忽略的点:如果是云服务器,重置密码前建议先在控制台拍个快照,万一操作失误还能回滚,这不是浪费时间,而是给自己留条后路。
单用户模式:物理机重置root密码的通用方法
单用户模式类似Windows的安全模式,只加载最核心的服务,给你一个root shell,这是Linux下忘记root密码最常用的自救渠道。
进入GRUB编辑界面
- 重启服务器,在GRUB菜单出现时,快速按键盘上的
e键进入编辑模式。 - 找到以
linux或linux16开头的那一行,这行负责加载内核参数。 - 在这一行的末尾,先加一个空格,然后输入
single,或者直接换用init=/bin/bash也行,两个参数效果略有区别,single更温和,init=/bin/bash会直接跳转到shell。 - 按
Ctrl+X或b键启动。
如果你的GRUB菜单有多个内核选项,选默认的那个就好,进入后,你会看到一个类似 sh-4.2# 的提示符,说明已经拿到root权限了。
挂载根分区并修改密码
这里有个坑:此时根文件系统通常是只读的,直接运行 passwd root 会报错,所以你得先重新挂载,让它可写。
mount -o remount,rw /
然后输入 passwd root,按提示输入两遍新密码,密码建议用大小写字母加数字和符号组合,长度不小于12位。
改完密码后,还得处理SELinux标签问题,如果你的系统开启了SELinux,直接重启可能会导致文件上下文错乱,稳妥做法是在刚才的内核参数里再追加一句 autorelabel,或者在shell里执行:
touch /.autorelabel
这样重启后系统会自动重打SELinux标签,多花一点时间,但能避免莫名其妙的登录问题。
不同发行版的细微差异
这里以Ubuntu/Debian为例,增加一个补充操作说明。
- Ubuntu的GRUB界面默认可能不显示,重启时需要按住
Shift键呼出菜单。 - Ubuntu进入单用户模式后,执行的命令通常是
mount -o remount,rw /和passwd root,步骤与CentOS一致。 - 如果系统使用systemd管理,也可以在GRUB编辑时在
linux行末尾追加systemd.unit=emergency.target,效果类似。
重启验证
一切搞定后,执行 reboot 或 exec /sbin/init 重启,等系统起来,用新密码登录试试,如果卡在登录界面进不去,重点检查刚才的SELinux步骤是否漏了。
救援模式:当GRUB也被密码锁住时的备用方案
有些服务器为了安全,给GRUB设置了密码,这种情况下,上面的方法行不通,因为按 e 编辑前就会让你输密码,别急,你还有救援模式。
救援模式需要一张同版本或更高版本的Linux安装盘(U盘也行),或者一张Live CD,整体思路是让系统从外接环境启动,然后挂载硬盘上的根分区,再修改root密码。
使用Live CD挂载原系统修改密码
以Ubuntu Live CD为例:
- 用光盘或U盘启动,选择“试用系统”,进入桌面环境。
- 打开终端,用
lsblk查看磁盘分区,找到原系统的根分区,一般类似或/dev/sda1
/dev/nvme0n1p2。 - 挂载根分区到一个临时目录,并进入该目录:
mkdir -p /mnt/rootmount /dev/sda1 /mnt/rootchroot /mnt/root
- 在chroot环境里执行
passwd root,设置新密码。 - 退出chroot,卸载分区,重启服务器。
这种方法更灵活,也能顺手修一些系统文件问题,业内专家认为,救援模式比单用户模式更强大,但也要求你手头有可用安装介质。
云服务器忘记root密码,用控制台重置还是救援模式?
云服务器的管理方式和物理机差异很大,因为你看不到显示器,按键也被网页终端替代,好在这几年主流云厂商都内置了密码重置入口,省去不少折腾。
控制台一键重置
登录云厂商的网页控制台,找到实例列表,选中目标机器,点击“重置密码”按钮,一般会让你输入新密码,然后强制重启生效,这是我最推荐的方式,因为操作简单,而且系统会自动处理好文件系统挂载等问题。
这里要提醒一句:控制台重置密码通常需要先关机,或者支持在线重置但会重启实例,如果你的业务不能中断,最好先在非业务高峰期操作,或者提前做快照。
| 重置方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 控制台重置 | 系统能正常启动 | 操作简单,无命令行门槛 | 一般需要重启实例 |
| VNC+运维操作 | 系统启动异常 | 可顺带排查其他问题 | 操作延迟高,容易误触 |
| 密钥登录后修改 | 已有有效私钥 | 业务不中断,秒级完成 | 要求提前配置过密钥对 |
VNC登录后手动重置
如果云厂商的重置功能不适用(比如系统损坏无法正常启动),你还可以用VNC登录到机器,然后按前面单用户模式的方法操作,VNC界面等于是一个远程的显示器加键盘,只是需要鼠标在网页上发消息,反应会慢一些,耐心点。
密钥对登录是另一个思路
有些云服务器为了安全,禁用了密码登录,改用密钥对,如果你连root密码都忘了,但本地保存着私钥,就可以直接通过密钥登录,然后执行 sudo passwd root 来重置密码,这种方法对运行中的业务没有影响,也值得记下来。
root密码重置后的安全加固建议
很多人在重置完密码后就直接不管了,结果没过多久又出问题,密码管理是服务器安全的底线,建议你顺手做几件事:
- 定期更换密码:尤其是root这类超级账户,建议每90天换一次。
- 开启SSH密钥登录:关了密码登录,等于少了一半被暴力破解的风险。
- 配置fail2ban:自动封禁多次登录失败的IP。
- 把root直接登录关掉:日常操作用普通用户加sudo,root只留给紧急情况。
据统计,相当一部分Linux系统被入侵,都是因为root密码过于简单或者从不更换,别等到出事了才想起来补课。
关于linux服务器修改root密码,你可能会问的3个问题
修改root密码会不会导致已登录的会话失效?
不会,密码验证只在登录时发生,已经登录的SSH会话或终端不会被影响,不过建议你改完密码后通知其他管理员,避免他们下次登录时一脸懵。
重置时提示“Authentication token manipulation error”怎么办?
常见原因是根分区是只读的,确认你已经执行过 mount -o remount,rw /,且当前状态是干净的shell环境,如果依然报错,检查磁盘是否满了,或者尝试用救援模式再操作。
服务器上跑着业务,能直接重启进行重置吗?
可以,但需要有计划,重启会导致业务中断,严重的话可能遇到文件系统检查或数据未落盘,正确做法是先切换流量或通知用户,在维护窗口内操作,同时确保有最近的快照或备份。
重置root密码这事,本身不复杂,真正麻烦的是你对环境不够熟悉,记住一个原则:先判断服务器的类型和可用的救援入口,再动手,永远不要盲目重启,希望这篇文章能帮你少走弯路,几分钟内把问题解决掉。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/762971.html




