使用日本线路Ubuntu服务器时,因长时间未登录、密钥遗失或错误操作导致不能通过SSH登录,不少用户第一时间想到的是联系服务商重置系统,但是这样会容易引发数据丢失和配置,如果服务器支持KVM控制台就完全可以自己在不重装系统的情况下重置密码。KVM控制台属于远程管理接口,可以让我们在机房现场一样操作服务器,即便是网络配置错误、SSH无法连接也可以通过它进入系统底层进行维护。
需要先登录到服务器提供商的管理面板,大多数日本线路的VPS或独立服务器都会在后台提供一个“KVM”或“IPMI”入口。点击进入后,会弹出一个类似远程桌面的界面,这就是你的服务器物理终端。在这里,我们看到的就是服务器开机时的画面,包括BIOS信息、系统引导菜单等。为了重置密码,我们需要从GRUB引导阶段开始操作。
当KVM界面显示到Ubuntu的GRUB菜单时,如果没有自动显示,可以在开机瞬间不停按住Shift键(BIOS启动)或Esc键(UEFI启动),直到进入GRUB界面。进入后,用方向键选中默认启动项,不要按回车,而是按e键进入编辑模式。此时会看到一段启动参数,其中包含linux开头的一行,这行定义了内核加载时的参数。我们需要在这行的末尾添加一段指令,让系统启动到单用户模式并挂载根目录为可写。
一般来说,这行末尾原本可能是ro quiet splash,我们将ro改为rw,并在末尾添加init=/bin/bash,也就是修改成类似这样的形式:
linux /boot/vmlinuz-xxx root=UUID=xxxx rw init=/bin/bash
这里的rw是让根文件系统可读写挂载,否则无法修改密码,init=/bin/bash则让系统直接进入bash shell,而不是正常启动多用户模式。编辑完成后,按Ctrl+X或F10启动。
系统启动后,屏幕上会显示一个bash提示符root@(none):/#,这时候我们已经是root用户了,但可能需要重新挂载根目录以确保读写权限。执行以下命令:
mount -o remount,rw /
这样可以确保后续修改密码的操作能够写入系统文件。接下来使用passwd命令为目标用户重置密码,如果是重置root密码则直接输入:
passwd root
系统会提示你输入新密码并确认,输入时屏幕不会显示任何字符,完成两次输入后,如果显示“password updated successfully”,说明密码已经修改成功。如果是普通用户,比如用户名为ubuntu,则命令改为:
passwd ubuntu
完成密码修改后,还不能直接重启,因为系统此时的环境比较特殊,没有正常挂载proc、sys等文件系统。为了安全地重启,可以先同步数据:
sync
然后使用exec /sbin/init或者直接reboot -f强制重启。重启完成后,就可以使用新密码通过SSH登录服务器了。
需要注意的是,部分日本线路服务器的Ubuntu可能启用了GRUB_PASSWORD或者在GRUB配置文件中加了编辑保护,如果在按e编辑启动项时要求输入密码,那只能先在KVM里通过Live CD或救援模式挂载硬盘,再修改/etc/shadow文件或重置GRUB配置。另外,一些云服务商可能会屏蔽init=/bin/bash启动方式,这种情况下可以在GRUB中将启动参数改为systemd.unit=rescue.target进入单用户模式,然后输入root密码(如果已知)再修改其他用户的密码。
如果服务器是云平台的日本线路VPS,还可以考虑直接在后台面板挂载一个Ubuntu的ISO镜像,通过KVM从ISO启动进入Live系统,然后挂载原系统分区。例如假设原系统分区是/dev/vda1,可以在Live系统中执行:
mount /dev/vda1 /mnt
chroot /mnt
passwd root
这样也能修改密码,然后退出chroot、卸载分区并重启进入原系统。虽然这种方法比GRUB编辑复杂,但在GRUB被保护时非常有效。
KVM控制台的优势在于不依赖网络环境和系统状态,在出现防火墙错误、SSH端口被改、网卡配置错误都可以通过KVM直接干预系统底层。如果是忘记密码这样问题完全可以利用KVM几分钟就能解决,不需要重装系统避免了业务中断和数据丢失。实际操作过程中,需要重置密码后及时登录系统,把重要账户的密码记录到安全的密码管理器,并启用SSH密钥登录来减少密码泄露风险。