详解Windows虚机使用serial console自救

很早以前其实分享过一篇《IT男自救指南之Azure custom script extension应用》,讲的内容其实是当Windows的虚机防火墙因为意外配置,导致block了RDP的端口,这种情况下如何进行自救的故事,没看过的可以去看看

https://blog.51cto.com/mxyit/2452428

其实除了之前讲的可以用custom script extension运行脚本来自救之外,我们还可以用serial console来解决这个问题,而且效果可能还会更好点

serial console之前已经介绍过了,它连接到 VM 或虚拟机规模集实例的 COM1 串行端口,为用户提供访问权限,而不管它的网络或操作系统状态如何,如果出现了防火墙block了RDP或者其他意外情况,我们都可以通过serial console登录到服务器中,windows的serial console同样有一些限制,这点和Linux是一样的

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

2. 不支持经典ASM VM

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


如果想在windows上使用serial console的话,我们需要开启SAC

Azure 上较新的 Windows Server 映像默认情况下已启用特殊管理控制台 (SAC)。 SAC 在服务器版本的 Windows 上受支持,但在客户端版本(例如 Windows 10、Windows 8 或 Windows 7)上不可用。

对于较旧的 Windows Server 映像(在 2018 年 2 月之前创建),可以通过 Azure 门户的运行命令功能自动启用串行控制台。 在 Azure 门户中,选择“运行命令”,然后从列表中选择名为“EnableEMS”的命令 。

图片13.png

但是其实直接在虚拟机上运行命令效果也是一样的

bcdedit /ems '{current}' on

bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200

开启SAC之后,我们点击虚拟机的serial console的时候应该就可以看到这个界面

图片14.png


在这里我们其实可以是直接运行cmd或者是PowerShell的,输入cmd命令之后看起来好像没什么变化

图片15.png


但是实际上可以通过ch -si 1切换到这个channel

图片16.png

在cmd中我们直接enter,之后就可以输入账户密码进行验证了

图片17.png

之后就能看到熟悉的cmd界面了!

图片18.png

之后就可以解决一些实际问题了,比如查询RDP是否启用,term service是否正在运行等等

图片19.png


微软已经把一些常见的场景都已经总结好了,也可以去看看

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




猜你喜欢

转载自blog.51cto.com/mxyit/2546190