忘记Linux服务器密码并不等于只能重装系统,通过单用户模式或云控制台重置,就能在几分钟内重新拿回root权限。 这一条路对物理服务器、虚拟机、云主机都适用,具体做法取决于你的系统版本和服务商。
linux服务器忘记root密码怎么重置?先分清环境
很多人一遇到“密码忘了”就乱了,直接想到备份文件、重装系统,但Linux和Windows不一样,它从设计上就保留了应急入口,只要你还能接触服务器的控制台(键盘屏幕或云厂商的VNC),就不存在“彻底锁死”的状态。
登录密码存放在 /etc/shadow 中,root用户或具备sudo权限的用户执行 passwd 就能覆盖它,重置密码的本质不是破解,而是“想办法在没有登录的情况下进入一个可以运行命令的环境”,方法分为两类:本地物理机的单用户模式,云服务器控制台的重置功能。
物理服务器:linux服务器密码忘了怎么进入系统?
物理服务器需要接显示器、键盘,或者通过IPMI/远程管理卡进入BIOS和启动菜单,开机时看到GRUB菜单,快速按方向键暂停自动启动,然后按 e 进入编辑界面,这里就是进入单用户模式的关键入口。
在具体动手前,先确认你的系统是SysVinit还是systemd,判断不难:CentOS 6及以前的版本用SysVinit,CentOS 7及以上、Ubuntu 16.04及以上都用systemd,不同体系的操作不一样。
老版本SysVinit系统:加single参数
CentOS 6等老系统,在GRUB界面按 e 后,找到以 kernel 开头的那一行,在末尾追加一个单词 single(或数字1),再按 b 或 Ctrl+x 启动,系统会直接进入单用户模式,没有密码验证,你会在一个 bash 提示符下,直接输入 passwd root 就能重置密码,完成后重启即可。
systemd系统:用init=/bin/bash或rd.break
CentOS 7/8/9、Ubuntu等较新系统,在GRUB编辑界面找到 linux16 或 linuxefi 开头的那一行,这里有两种常用做法。
第一种,将该行内的 ro
改为 rw init=/sysroot/bin/sh,然后按 Ctrl+x 启动,系统会挂载真实根目录到 /sysroot 并以一个shell启动,接着执行:
chroot /sysroot
passwd root
exit
第二种,在 linux16 行尾追加 rd.break,启动后进入一个 switch_root 环境,此时真实系统未挂载,需要先手动让它可写,再执行:
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
如果你不确定选哪种,init=/sysroot/bin/sh 在很多主流发行版上更直观,少一条挂载命令。
重置后别忘了SELinux上下文
CentOS/RHEL/Fedora 等默认开启SELinux的系统,重置 shadow 文件后,文件的安全上下文可能不正确,登录时可能出现“密码正确但进不去”的异常,安全做法是,在chroot环境中执行 touch /.autorelabel,让系统下次启动时自动修正所有文件的安全上下文,Ubuntu和Debian没有这个机制,可以跳过。
下面是不同方式和适用场景的对比:
| 场景 | 方法 | 复杂程度 | 费用 |
|---|---|---|---|
| 物理机/老版本 | kernel行加single | 最简单 | 免费 |
| 物理机/systemd | init=/sysroot/bin/sh | 中等 | 免费 |
| 云服务器 | 控制台重置密码 | 最简单 | 免费 |
| 系统损坏 | 救援模式 | 较高 | 视服务商而定 |
云服务器linux忘记密码怎么解决?直接走控制台
云服务器的情况比物理机简单得多,因为你无法去机房按键盘,但云厂商提供了在线重置密码的快捷入口,这也是绝大多数人最顺手的方法。
控制台重置密码是首选
简米云、酷番云、华为云等主流平台,实例列表页通常都有“重置密码”按钮,操作逻辑大同小异:选中实例,点击重置密码,按厂商要求输入新密码,有些需要先关机,有些支持在线重置,几分钟后生效,然后用新密码SSH登录,这个过程不需要你了解GRUB,也不涉及单用户模式。
密钥登录的Linux服务器
如果你的服务器登录时主要用SSH密钥,root密码长期没用过,早就忘了,这也不要紧,控制台重置root密码不会影响已有的密钥登录,重置后,你可以继续用密钥登录,也可以改用新密码,很多开发者会同时保留两种方式,防止再次踩坑。
控制台重置失败时,用救援模式
少数情况下,比如系统文件受损或磁盘已满,控制台重置密码始终报错,这时候可以用云厂商提供的“救援模式”(也叫救援系统、维护模式),它的原理是挂载一个临时的Linux系统启动你的数据盘,然后挂载原系统分区,直接修改 /shadow 文件,具体步骤在厂商文档里都有,核心命令仍是 passwd 或 chroot,这个过程的难度相当于手动给系统做“急救”。
linux服务器密码重置多少钱?自己动手最便宜
有些用户遇到这种情况会焦虑,担心自己操作把系统搞坏,宁愿花钱找人处理,于是经常看见“linux服务器密码重置多少钱”这类疑问,这没有统一定价,渠道和地域差异很大,云厂商控制台的自助重置功能完全免费;如果是IDC机房代操作或找第三方运维,费用往往按次或按工时计算,不同城市的行情并不一样,但说到底,如果只是重置root密码,按照本文的单用户模式步骤,有基础的人十分钟就能搞定,完全不必要花钱。
普通用户密码忘了怎么办?
如果你忘记的不是root,而是某个业务账号(如www、mysql),操作更简单,先用已有的root账号登录,然后直接执行:
passwd 用户名
输入两遍新密码,完成,如果root自己也进不去,那还是回到单用户模式,登录后再执行同样的命令。
重置密码前后,这几点必须检查
为了不让重置变成又一次灾难,在动手前和完成后,有几项检查和备份工作值得做。
- 做快照:云服务器在重置密码前,最好花一分钟做一个磁盘快照,单用户模式的操作本身风险很低,但如果过程中误删了文件,快照就是后悔药。
- 确认磁盘加密状态:如果数据盘或系统盘启用了LUKS加密,单用户模式下的密码重置只解决系统登录,不解决磁盘加密口令,没有加密密钥,重置后依然无法挂载磁盘。
- 检查SSH服务:重置密码后试着重启一下
sshd,确认新密码能正常登录,不要等下次需要登录时再发现权限有问题。 - 统一密码策略:重置后的root密码尽量包含大小写字母、数字和符号,长度不少于12位,服务器管理员人越少,密码复杂度就要越高。
重置密码不会丢数据,放心动手
忘记密码不是灾难,因为重置密码本质上只是修改 shadow 文件,不会格式化数据,除非你选择了重装系统,或者磁盘本身损坏,否则网站数据、数据库文件都在原处,这也是为什么建议先用恢复手段,而不是重装。
业内专家指出,Linux单用户模式的存在,正是为了让管理员在丢失密码或系统故障时仍能接管服务器,所以它有风险:任何能拿到服务器物理控制台的人,都能通过这种方式入侵,机房物理安全和服务商控制台的访问权限,必须严格管理。
linux服务器登录密码忘记后的Q&A
重置密码会影响服务器里的软件和数据吗?
不会,修改 /etc/shadow 只改变密码哈希,不动其他文件,但若系统盘存在LUKS加密,需要提前确认解密密钥是否在手边。
单用户模式进不去,还有别的办法吗?
有,可以尝试用系统安装盘启动进入“救援模式”(rescue),通过挂载原系统根分区后执行chroot和passwd,这个方法也适用于GRUB引导损坏的场景。
从控制台重置密码和单用户模式有什么区别?
控制台重置是虚拟化层在帮你操作,相当于云厂商替你把单用户模式的工作做了;单用户模式则是直连系统应急入口,更适合物理机或复杂故障排查,两者得出的结果一致:新的root密码。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/695610.html





