详解Linux 虚拟机如何进入单用户模式

一笑奈何 提交于 2020-11-05 03:28:46

今天来讨论下如何在云上的Linux虚拟机进入单用户模式,很多人可能没太想过云上的虚拟机还能这么玩,其实是可以的,当然一般情况下需要进入单用户模式的时候都不是为了玩的,而是因为发生了一些意外,导致我们没办法通过正常模式进入系统,比如比较常见的就包括以下几种场景

  1. FSTAB文件损坏或者配置错误,导致找不到磁盘驱动器或者分区

  2. 防火墙规则配置错误

  3. 文件系统损坏

  4. SSH配置出现问题

  5. 引导失败

一旦出现了这些问题,我们都没办法通过正常ssh连接到虚拟机,而云上的服务器我们又没办法直接进入机房,这时候可能就会束手无策。在Global Azure中我们可以使用VM的一项功能serial console通过单用户模式登录到系统,从而解决问题,这项功能在21v目前还不支持,不过也不意味着这种问题在21v没办法解决,如果在21v出现以上的问题,我们可以直接联系support,他们有办法在hyper-v层面直接登录虚机

简单来说,serial console可以连接到 VM 或虚拟机规模集实例的 ttyS0 或 COM1 串行端口,为用户提供访问权限,而不管它的网络或操作系统状态如何。

请注意的是,有几个重点信息我们需要关注下

1. 串行控制台当前与托管的启动诊断存储帐户不兼容。 若要使用串行控制台,请确保使用的是自定义的存储帐户。

2. 不支持经典ASM VM

3. 使用串行控制台的 Azure 帐户必须对 VM 和启动诊断存储帐户拥有虚拟机参与者角色

详细的信息都可以参考官网的链接

https://docs.microsoft.com/zh-cn/azure/virtual-machines/troubleshooting/serial-console-overview?WT.mc_id=AZ-MVP-5001235

下边来看具体如何操作,serial console的操作都需要在Azure Portal上进行,所以我们必须要有azure的账号

首先点击需要进入单用户的虚机,然后找到serial console

图片1.png


这里可以直接用账户密码登录,不过直接在这里登录其实意义不大,还不如通过xshell或者putty来的方便

图片2.png



不过因为CentOS的单用户模式要求启用root账户,所以可以在这里先把root账户启用(没启用root也没关系,也有别的办法)

图片3.png


修改/etc/ssh/sshd_config,确保 PermitRootLogIn 设置为 no

修改/etc/securetty,确保root只会通过ttyS0登录

如果想用单用户登录的话,直接在serial console这里重启虚机

图片4.png

按ESC进入GRUB界面,然后E进行编辑

图片5.png


在内核行(Linux16开始)末尾添加

systemd.unit=resuce.target

图片6.png


Ctrl+x退出,可以看到重启后进入了rescue mode

图片8.png

要求输入root密码

图片9.png


成功登陆

图片10.png


但是这时候,sshd等都没有启动,所以想要通过ssh访问虚拟机是访问不了的,接下来如果我们有什么需要修复的东西,就都可以在这里进行修复了

图片11.png

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!