Acceso Serial Console a VMs en Azure

Hace unos días un miembro de AzureBrains planteó un problema en el grupo de Telegram:

https://t.me/azureespanya

Lo que le ocurrió es que tras crear una máquina virtual en Azure y acceder a ella vía RDP, modificó en esta máquina el puerto de RDP pero no abrió este puerto en el firewall de la máquina (Windows Server). A pesar de abrir el puerto en el NSG, si no está también abierto en el firewall del sistema operativo, no será posible acceder vía RDP.

Algo parecido habría podido ocurrir si en la máquina desactivamos el servicio de RDP o en una máquina Linux si desactivamos el servicio SSH o modificamos su puerto y habilitamos FirewallD o iptables.

¿Qué podemos hacer en un caso como este? Siempre podemos ejecutar un script o un comando sobre la máquina virtual sin necesidad de un acceso vía RDP o SSH:

Usando esta opción podríamos corregir la situación abriendo los puertos necesarios en el firewall, haciendo cambios en los servicios, …

Sin embargo, si queremos un acceso más interactivo podemos utilizar el acceso mediante Serial Console. Esta opción la encontramos en “Support + troubleshooting”, pero previamente debemos tener habilitado el diagnóstico de arranque en la máquina. Si no lo tenemos, podemos habilitarlo:

Hay que tener en cuenta que la cuenta para “boot diagnostics” debe ser custom y no managed:

También es necesario tener el rol de Virtual Machine Contributor. Si cumplimos estos requisitos, ya podemos acceder vía serial console:

Si la máquina es Windows también tenemos este tipo de acceso:

Basta con escribir “cmd” para crear un canal Command Prompt en esta máquina y poder ejecutar comandos:

Podemos ver los canales que están creados:

Y podemos cambiar a cualquier canal con el comando “ch -si <numero-canal>” o pulsando Esc+Tab:

Y si entramos en este canal ya tendremos acceso a un cmd en la máquina virtual:

E incluso podemos abrir una sesión PowerShell: