把 root 密码忘了,第一反应多半是"完了,得重装"。先别急 —— 只要 VPS 还能开机、商家后台还能登进去,密码几乎都能拿回来,服务器上的数据一个字节都不会丢。
麻烦的不是忘密码本身,而是不知道该走哪条路。有的商家面板上点一下就重置,有的必须进救援模式手敲命令,还有的两条路都不通,得从 GRUB 里撬开。
这篇按"代价从低到高"把三条路依次写清楚,最后再把"密码改完了还是进不去"这个高频二次故障一起解决。
这三种情况看着都是"登不上服务器",解法完全不一样,别一上来就重置密码。
| 现象 | 原因 | 要不要重置密码 |
|---|---|---|
提示 Permission denied (publickey) | 密钥不对、用户不对、家目录权限不对 | ❌ 不是密码问题 |
提示 Connection refused / Connection timed out | sshd 没起来、端口改了、IP 被墙 | ❌ 不是密码问题 |
| 密码输进去就是不对 | 真忘了,或者被 cloud-init 改过 | ✅ 就是本文这种情况 |
前两种折腾密码是白费功夫 —— 密码改对了照样连不上,该看的是 SSH Permission denied 排查 和 SSH 连不上怎么办。
还有一种最容易搞混的:Ubuntu、Debian 的云镜像默认把 root 账号锁了,只能用 ubuntu、debian 这类普通用户加 SSH 密钥登录。你"忘记 root 密码",其实是因为 root 压根没设过密码。在服务器上执行一句 sudo passwd root 就行,后面三条路一条都不用走。
绝大多数商家在控制面板里都提供了重置入口,位置各家不同,但按钮名字跑不出这几个关键词:
Root Password/Reset Password/Change PasswordConsole/VNC/Emergency Console
按面板类型找:
SolusVM / Virtualizor 面板(Racknerd 用的就是 SolusVM)—— VPS 详情页里有一栏 Root Password,填个新密码提交即可。
这里有个机制要记住:新密码是下次开机时由系统写入的,提交完必须重启一次才生效。重启之前用新密码怎么登都是错的,很多人卡在这一步。
自研面板(搬瓦工 的 KiwiVM、Vultr 的控制台)—— 一般至少有两条路:面板里带 VNC / 紧急控制台,能直接看开机日志、在图形终端里登录;再就是 Reset Password 这类按钮。
不管哪家,操作顺序基本一致:
- 面板里点重置,拿到新密码
- 重启 VPS
- 用新密码 SSH 登录
- 进去立刻
passwd root改成自己记得住的密码
面板里找不到这个按钮,或者点了报错,才往下走第二条路。
救援模式是商家提供的一个临时系统 —— 用一个独立的 Linux 把你原来的磁盘挂起来,你可以在里面改密码、修配置、捞数据。
主流商家基本都支持,入口通常在面板的 Boot / Boot Order / Recovery 里,选成 Rescue 或 Recovery 然后重启。
进去之后的动作,核心就四步:找到根分区 → 挂载 → chroot → passwd。
# 1. 先看清磁盘布局
lsblk -f
# 常见的根分区名字:
# /dev/vda1 /dev/sda1 /dev/nvme0n1p1
# LVM: /dev/mapper/vg0-root 或 /dev/ubuntu-vg/ubuntu-lv
# 2. 是 LVM 的话先激活卷组
vgchange -a y
# 3. 挂载根分区
mount /dev/vda1 /mnt
# 4. 把运行环境挂进去,否则 passwd 会报错
for d in dev proc sys; do mount --bind /$d /mnt/$d; done
# 5. chroot 进去
chroot /mnt
# 6. 改密码,输两遍新密码
passwd root
# 7. 退出并卸载
exit
umount -R /mnt
reboot
重启前记得把面板的启动项改回硬盘启动,不然重启又落回救援系统 —— 这个坑每年都有人踩。
几个常见卡点:
/dev/vda1挂不上:先lsblk看真实设备名,别照着教程抄- 提示设备正忙:用
mount -o ro /dev/vda1 /mnt只读挂载,改密码前再mount -o remount,rw /mnt chroot之后passwd报找不到库文件:proc、sys、dev没挂全,退回第 4 步
救援模式的更多用途(fsck 修文件系统、修 GRUB、找回被误删的配置)写在救援模式完整指南里,这里只讲重置密码这条线。
前两条都不通 —— 商家不提供救援模式,面板也点不动 —— 那就只能从系统自己的引导菜单撬。前提是你能打开 VNC 控制台看到开机画面。
思路很简单:开机时中断 GRUB,给内核加一个 init=/bin/bash 参数,让它跳过所有服务,直接给你一个 root shell。
- 打开 VNC 控制台,重启 VPS
- 开机瞬间连续按
Esc(有的镜像要按Shift)调出 GRUB 菜单 - 光标停在启动项上,按
e进入编辑 - 找到以
linux开头那一行,在末尾加个空格,再加init=/bin/bash - 按
Ctrl + X启动
进去之后是个没有写权限的 shell,先把根分区改成可写:
mount -o remount,rw /
passwd root
# RHEL / AlmaLinux / Rocky 系:不重建 SELinux 标签,重启后会卡在登录界面或服务起不来
touch /.autorelabel
# 正常重启
exec /sbin/init
# 或强制重启
reboot -f
这条路上有两个专门卡人的地方:
- GRUB 菜单根本不出现:云镜像默认
GRUB_TIMEOUT=0而且隐藏菜单,开机直接进系统。要调出来得在启动瞬间一直按Esc;实在按不出来,说明你得先用救援模式改/etc/default/grub,把GRUB_TIMEOUT改成 5,update-grub之后再来。 passwd报Authentication token manipulation error:根分区还是只读的,mount -o remount,rw /重来一遍。如果确认可写了还报这个错,检查/etc/shadow有没有被人加过不可变属性:chattr -i /etc/shadow。
Windows 系统的密码重置是三块里最省事的:
- 面板里有
Windows Password/Reset Administrator Password的,必须先关机再点,然后等几分钟(它是挂载 ISO 去改 SAM 数据库),改完开机用新密码登录。 - 没有这个功能的,直接重装最干脆 —— 但动手前先确认机器上没有需要保留的数据。
这是最常见的二次故障:密码没错、服务器也在跑,就是登不上。按这个顺序查。
1. sshd 根本不允许密码登录。
grep -Ei "PasswordAuthentication|PermitRootLogin" /etc/ssh/sshd_config
grep -rEi "PasswordAuthentication|PermitRootLogin" /etc/ssh/sshd_config.d/
PasswordAuthentication no 就是关了密码登录,PermitRootLogin prohibit-password 是不让 root 用密码登。这两项没改回来,密码改成什么都没用。要么改配置再 systemctl restart ssh,要么干脆走密钥登录:配置 SSH 密钥登录。
2. 你改的是 root 密码,登录的账号却不是你。 云镜像上习惯敲 ssh ubuntu@ip,改了 root 密码自然还是进不去。该用 ssh root@ip,或者先登普通用户再 su -。
3. 端口不是 22。 很多人会把 SSH 端口改掉。翻一下 sshd_config 里的 Port,或者直接 ssh -p 2222 root@ip 试一下。
4. 还处在防火墙或 Fail2Ban 的封禁里。 密码连错几次,Fail2Ban 就把你的 IP 拉黑了 —— 这时候密码是对的也连不上。自救方法见被 Fail2Ban 误封怎么办。
5. cloud-init 又把它改回去了。 少数商家的镜像每次开机都从面板同步 root 密码,覆盖你在系统里改的值。这种情况以面板里的密码为准,别跟它较劲。
6. 服务器压根没重启成功。 面板显示"运行中"不代表系统起来了,可能卡在 fsck 或者启动失败。VNC 看一眼启动日志最直接。
面板进不去、没有救援模式、VNC 也连不上 —— 比如账号被锁、账单欠费被停机、商家跑路 —— 那就只剩提工单或者重装了。
重装之前先把数据捞出来,只要能进救援模式就能拿走整个系统盘:
# 救援系统里:挂载并打包
mount /dev/vda1 /mnt
tar czf /root/site-backup.tar.gz -C /mnt var/www etc/nginx
# 自己电脑上:拉回来
scp root@救援系统IP:/root/site-backup.tar.gz ./
数据量大就只打包业务目录,别整盘打 —— /usr、/var/lib/docker 这类东西没必要搬。
提工单一次说清,别来回磨。 第一封工单里就把这几件事写全:VPS 的 IP 和订单号、你想做什么(重置 root 密码 / 申请进入救援模式)、你已经试过哪些方法、报错原文。能省掉两三天的来回。
模板可以看工单该怎么写,重装的具体选择(面板重装、DD 脚本、装完先做什么)在重装系统指南里。
忘密码这事,最好的解法是让它不会再发生:
- 改用 SSH 密钥登录,密码登录直接关掉。密钥不会忘,也不怕被爆破。
- 密钥和密码都交给密码管理器,别存在浏览器里,更别存在微信收藏。
- 把商家的 VNC 控制台先试通一次。真出事那天你才知道它能不能用、要按什么键。
- 顺手做一份快照或备份。密码和防火墙的坑都能救回来,硬盘挂了可救不回来。
挑机器的时候,面板功能其实是个被忽略的点:有没有能用的 VNC 控制台、有没有救援模式、能不能一键重置密码 —— 这些在出事那天,比 CPU 型号重要得多。
按顺序试:面板重置 → 救援模式 → GRUB 单用户模式。前两条能解决 95% 的情况,第三条是兜底。
真正要记住的就两句:忘记密码不等于丢数据;改完密码还登不上,八成是 sshd 配置或封禁的问题,不是密码的问题。
延伸阅读:
