linux进入单用户模式找回root密码

背景

  手上有一台wishosting的大硬盘机器闲置,前几天租给了别人,没过多久他联系我说无法登录ssh了,可能是密码忘记了。租出去的机器出现这种情况,我当然是担心误会信誉有问题,遂第一时间帮助找回了root密码。顺便在此记录一下~~

操作

  目标很明确,我们只需要进入单用户模式,然后执行passwd命令即可修改root密码,所以其实也并非找回密码,只是给重置成一个已知密码而已。

  • 进入单用户模式
      首先我们使用vnc连接小鸡并执行重启,在开机的初始阶段长按shift(ESC按键也可尝试)进入grub菜单,选择recovery mode ,


  按e,编辑启动参数,把ro recovery nomodeset 改成rw single init=/bin/bash


然后按ctrl+x 或者F10 我们就可以进入单用户模式了。

  • 修改root密码
      直接执行passwd root命令键入两次需要设定的密码即可,注意输入密码的过程是不会显示密码的,你只需要保证自己没输错即可,然后reboot一下就可以了,这样就算找回了密码。

    插曲

      一般情况下,如上操作一番基本上可以解决问题。但是在我这个个例中,在确保我修改了密码的情况下,VNC可以登录root,却始终无法连接ssh。/etc/init.d/ssh status 查看了一下,提示‘ser root not allowed because not listed in’,在我把/etc/ssh/sshd_config中添加了root用户组并重启ssh服务后终于可以连上了。我推断是租客的某些操作导致了这种情况的出现,也许他的密码并没有忘记,只是一直被拒绝登录- -。
    顺便贴出搜罗出的ssh配置的相关说明:

    SSH 服务相关参数,可以对登录的用户或用户组进行限制。说明如下:

    • AllowUsers:允许登录的用户白名单。只有该参数标注的用户可以登录。
    • DenyUsers:拒绝登录的用户黑名单。该参数标注的用户都拒绝登录。
    • AllowGroups:允许登录的用户组白名单。只有该参数标注的用户组可以登录。
    • DenyGroups:拒绝登录的用户组黑名单。该参数标注的用户组都拒绝登录。

    注意: 拒绝策略优先级高于允许策略。比如:

    • 如果 AllowUsers 和 DenyUsers 参数包含了同一个用户,则拒绝策略优先,所以最终该用户还是无法登录。
    • 如果 AllowUsers 和 DenyGroups 参数包含了同一个用户,则拒绝策略优先,所以最终该用户还是无法登录。

    要解决此问题,对前述不同情况,请进行如下配置检查或修改:

    • 通过 管理终端 进入系统。
    • 通过 cat 等指令查看 /etc/ssh/sshd_config 中是否包含类似如下配置:AllowUsers root testDenyUsers testDenyGroups testAllowGroups root
    • 如果需要修改相关策略配置,在继续之前建议进行文件备份。
    • 使用 vi 等编辑器,修改策略配置,以确保相关用户能够正常登录。或者整个删除或注释(在最开头添加 # 号)整行配置(完全取消用户访问控制):#AllowUsers root test#DenyUsers test#DenyGroups test#AllowGroups root
    • 使用如下指令,重启 SSH 服务使配置生效:service sshd restart

结语

最好还是不要忘记root密码,或者不要使用root用户管理自己的机器,这家伙的权限太高了,一不小心可能系统会崩溃的- -。

  1. 1. 背景
  2. 2. 操作
  3. 3. 插曲
  4. 4. 结语