今天来讨论下如何在云上的Linux虚拟机进入单用户模式,很多人可能没太想过云上的虚拟机还能这么玩,其实是可以的,当然一般情况下需要进入单用户模式的时候都不是为了玩的,而是因为发生了一些意外,导致我们没办法通过正常模式进入系统,比如比较常见的就包括以下几种场景
FSTAB文件损坏或者配置错误,导致找不到磁盘驱动器或者分区
防火墙规则配置错误
文件系统损坏
SSH配置出现问题
引导失败
一旦出现了这些问题,我们都没办法通过正常ssh连接到虚拟机,而云上的服务器我们又没办法直接进入机房,这时候可能就会束手无策。在Global Azure中我们可以使用VM的一项功能serial console通过单用户模式登录到系统,从而解决问题,这项功能在21v目前还不支持,不过也不意味着这种问题在21v没办法解决,如果在21v出现以上的问题,我们可以直接联系support,他们有办法在hyper-v层面直接登录虚机
简单来说,serial console可以连接到 VM 或虚拟机规模集实例的 ttyS0 或 COM1 串行端口,为用户提供访问权限,而不管它的网络或操作系统状态如何。
请注意的是,有几个重点信息我们需要关注下
1. 串行控制台当前与托管的启动诊断存储帐户不兼容。 若要使用串行控制台,请确保使用的是自定义的存储帐户。
2. 不支持经典ASM VM
3. 使用串行控制台的 Azure 帐户必须对 VM 和启动诊断存储帐户拥有虚拟机参与者角色
详细的信息都可以参考官网的链接
下边来看具体如何操作,serial console的操作都需要在Azure Portal上进行,所以我们必须要有azure的账号
首先点击需要进入单用户的虚机,然后找到serial console
这里可以直接用账户密码登录,不过直接在这里登录其实意义不大,还不如通过xshell或者putty来的方便
不过因为CentOS的单用户模式要求启用root账户,所以可以在这里先把root账户启用(没启用root也没关系,也有别的办法)
修改/etc/ssh/sshd_config,确保 PermitRootLogIn 设置为 no
修改/etc/securetty,确保root只会通过ttyS0登录
如果想用单用户登录的话,直接在serial console这里重启虚机
按ESC进入GRUB界面,然后E进行编辑
在内核行(Linux16开始)末尾添加
systemd.unit=resuce.target
Ctrl+x退出,可以看到重启后进入了rescue mode
要求输入root密码
成功登陆
但是这时候,sshd等都没有启动,所以想要通过ssh访问虚拟机是访问不了的,接下来如果我们有什么需要修复的东西,就都可以在这里进行修复了
来源:oschina
链接:https://my.oschina.net/u/4256405/blog/4702484