Inicio de sesión en una máquina virtual Linux en Azure mediante Microsoft Entra ID y OpenSSH

Para mejorar la seguridad de las máquinas virtuales (VM) Linux en Azure, puede integrarlas con la autenticación de Microsoft Entra. Ahora puede usar Microsoft Entra ID como plataforma de autenticación principal y una autoridad de certificación para conectarse mediante SSH en una VM Linux mediante Microsoft Entra ID y la autenticación basada en certificados de OpenSSH. Esta funcionalidad permite a las organizaciones administrar el acceso a las máquinas virtuales con el control de acceso basado en roles (RBAC) de Azure y las directivas de acceso condicional.

En este artículo, se muestra cómo crear y configurar una VM Linux e iniciar sesión con Microsoft Entra ID mediante la autenticación basada en certificados de OpenSSH.

El uso de Microsoft Entra ID con la autenticación basada en certificados de OpenSSH para iniciar sesión en VM Linux en Azure conlleva varias ventajas de seguridad. Entre ellas, las siguientes:

  • Puede usar las credenciales de Microsoft Entra para iniciar sesión en las VM Linux de Azure.
  • Puede obtener la autenticación basada en claves SSH sin necesidad de distribuir claves SSH a los usuarios ni aprovisionar claves SSH públicas en las máquinas virtuales Linux de Azure que implemente. Esta experiencia es mucho más sencilla que tener que preocuparse por la distribución de claves públicas SSH obsoletas que podrían provocar accesos no autorizados.
  • Puede reducir la dependencia de cuentas de administrador locales, el robo de credenciales y las credenciales débiles.
  • Ayude a proteger las VM Linux mediante la configuración de directivas de complejidad de contraseñas y duración de contraseñas para Microsoft Entra ID.
  • Con RBAC, especifique quién puede iniciar sesión en una máquina virtual como usuario normal o con privilegios de administrador. Cuando se unan usuarios al equipo, puede actualizar la directiva de RBAC de Azure de la máquina virtual para conceder acceso según corresponda. Cuando los empleados dejan la organización y su cuenta de usuario se deshabilita o se quita de Microsoft Entra ID, dejan de tener acceso a los recursos.
  • Con el acceso condicional, configure directivas para requerir la autenticación multifactor o requerir que el dispositivo cliente sea un dispositivo administrado (por ejemplo, un dispositivo compatible o unido a Microsoft Entra híbrido) antes de poder conectarse mediante SSH a las VM Linux.
  • Use las directivas de implementación y auditoría de Azure para requerir el inicio de sesión de Microsoft Entra para las VM Linux y marcar las cuentas locales no aprobadas.

El inicio de sesión en VM Linux con Microsoft Entra ID funciona para clientes que usan los Servicios de federación de Active Directory (AD FS).

Distribuciones de Linux y regiones de Azure compatibles

Actualmente, se admiten las siguientes distribuciones de Linux para las implementaciones en una región admitida:

Distribución Versión
Common Base Linux Mariner (CBL-Mariner) CBL-Mariner 1, CBL-Mariner 2
CentOS CentOS 7, CentOS 8
Debian Debian 9, Debian 10, Debian 11, Debian 12
openSUSE openSUSE Leap 42.3, openSUSE Leap 15.1+
Oracle Oracle Linux 8, Oracle Linux 9
RedHat Enterprise Linux (RHEL) De RHEL 7.4 a RHEL 7.9, RHEL 8.3+
SUSE Linux Enterprise Server (SLES) SLES 12, SLES 15.1+
Ubuntu Server De Ubuntu Server 16.04 a Ubuntu Server 22.04, todas las versiones secundarias después de Ubuntu 22.04

Esta característica admite actualmente las siguientes regiones de Azure:

  • Azure Global
  • Azure Government
  • Microsoft Azure operado por 21Vianet

No se admite el uso de la extensión de SSH para la CLI de Azure en clústeres de Azure Kubernetes Service (AKS). Para obtener más información, consulte Directivas de soporte técnico para AKS.

Si decide instalar y usar la CLI de Azure localmente, debe ser la versión 2.22.1 o posterior. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.

Nota

Esta funcionalidad también está disponible para servidores habilitados para Azure Arc.

Requisitos de cumplimiento para iniciar sesión con Microsoft Entra ID mediante la autenticación basada en certificados de OpenSSH

Para habilitar el inicio de sesión de Microsoft Entra mediante la autenticación basada en certificados de SSH para las VM Linux en Azure, asegúrese de que se cumplan los siguientes requisitos de red, VM y cliente (cliente SSH).

Red

La configuración de red de la máquina virtual debe permitir el acceso de salida a los siguientes puntos de conexión mediante el puerto TCP 443.

Azure global:

  • https://packages.microsoft.com: para la instalación y las actualizaciones de los paquetes.
  • http://169.254.169.254: punto de conexión de Azure Instance Metadata Service.
  • https://login.microsoftonline.com: para flujos de autenticación basados en PAM (módulos de autenticación conectables).
  • https://pas.windows.net: para flujos de RBAC de Azure.

Azure Government:

  • https://packages.microsoft.com: para la instalación y las actualizaciones de los paquetes.
  • http://169.254.169.254: punto de conexión de Azure Instance Metadata Service.
  • https://login.microsoftonline.us: para flujos de autenticación basados en PAM.
  • https://pasff.usgovcloudapi.net: para flujos de RBAC de Azure.

Microsoft Azure operado por 21Vianet:

  • https://packages.microsoft.com: para la instalación y las actualizaciones de los paquetes.
  • http://169.254.169.254: punto de conexión de Azure Instance Metadata Service.
  • https://login.chinacloudapi.cn: para flujos de autenticación basados en PAM.
  • https://pas.chinacloudapi.cn: para flujos de RBAC de Azure.

Máquina virtual

Asegúrese de que la máquina virtual esté configurada con la siguiente funcionalidad:

  • Identidad administrada asignada por el sistema. Esta opción se selecciona automáticamente cuando se usa Azure Portal para crear máquinas virtuales y seleccionar la opción de inicio de sesión de Microsoft Entra. También puede habilitar la identidad administrada asignada por el sistema en una máquina virtual nueva o existente mediante la CLI de Azure.
  • aadsshlogin y aadsshlogin-selinux (según el caso). Estos paquetes se instalan con la extensión de máquina virtual AADSSHLoginForLinux. La extensión se instala cuando se usa Azure Portal o la CLI de Azure para crear máquinas virtuales y se habilita el inicio de sesión de Microsoft Entra (pestaña Administración).

Remoto

Asegúrese de que el cliente cumpla los requisitos siguientes:

  • Compatibilidad del cliente SSH con los certificados basados en OpenSSH para la autenticación. Para cumplir este requisito, puede usar la CLI de Azure (2.21.1 o posterior) con OpenSSH (que se incluye en la versión 1803 de Windows 10 y versiones posteriores) o Azure Cloud Shell.

  • Extensión de SSH para la CLI de Azure. Puede instalar esta extensión mediante az extension add --name ssh. No es necesario instalar esta extensión cuando se usa Azure Cloud Shell, ya que viene preinstalada.

    Si usa cualquier otro cliente SSH que no sea la CLI de Azure o Azure Cloud Shell y que admita certificados OpenSSH, deberá seguir usando la CLI de Azure con la extensión de SSH para recuperar los certificado SSH efímeros y, opcionalmente, un archivo de configuración. Después, puede usar el archivo de configuración con el cliente SSH.

  • Conectividad TCP desde el cliente hasta la dirección IP pública o privada de la máquina virtual. (También funcionan ProxyCommand o el reenvío SSH a una máquina con conectividad).

Importante

Los clientes SSH basados en PuTTy ahora admiten certificados OpenSSH y se pueden usar para iniciar sesión con la autenticación basada en certificados de OpenSSH de Microsoft Entra.

Habilitación del inicio de sesión de Microsoft Entra para una VM Linux en Azure

Para usar el inicio de sesión de Microsoft Entra para una VM Linux en Azure, primero debe habilitar la opción de inicio de sesión de Microsoft Entra para la VM Linux. Luego, configure las asignaciones de roles de Azure para los usuarios que están autorizados a iniciar sesión en la máquina virtual. Por último, use un cliente SSH que admita OpenSSH, como la CLI de Azure o Azure Cloud Shell, para conectarse mediante SSH a la máquina virtual Linux.

Hay dos formas de habilitar el inicio de sesión de Microsoft Entra para una VM Linux:

  • La experiencia de Azure Portal al crear una máquina virtual Linux
  • La experiencia de Azure Cloud Shell al crear una máquina virtual Linux o usar una existente

Azure portal

Puede habilitar el inicio de sesión de Microsoft Entra para cualquiera de las distribuciones de Linux admitidas mediante Azure Portal.

Por ejemplo, para crear una VM con Ubuntu Server 18.04 de soporte técnico a largo plazo (LTS) en Azure con el inicio de sesión de Microsoft Entra:

  1. Inicie sesión en Azure Portal con una cuenta que tenga acceso para crear máquinas virtuales y seleccione + Crear un recurso.
  2. Seleccione Crear en Ubuntu Server 18.04 LTS en la vista Popular.
  3. En la pestaña Administración:
    1. Active la casilla Iniciar sesión con Microsoft Entra ID.
    2. Asegúrese de que esté seleccionada la casilla Identidad administrada asignada por el sistema.
  4. Pase por el resto de la experiencia de creación de una máquina virtual. Tendrá que crear una cuenta de administrador con nombre de usuario y contraseña o clave pública SSH.

Azure Cloud Shell

Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo. Cloud Shell incluye herramientas comunes de Azure preinstaladas y configuradas para que las use con su cuenta. Solo hay que seleccionar el botón Copiar para copiar el código, pegarlo en Cloud Shell y, a continuación, pulsar la tecla Entrar para que se ejecute.

Existen varias maneras de abrir Cloud Shell:

  • Seleccione Pruébelo en la esquina superior derecha de un bloque de código.
  • Abra Cloud Shell en el explorador.
  • Seleccione el botón Cloud Shell en el menú de la esquina superior derecha de Azure Portal.

Si decide instalar y usar la CLI de Azure de forma local, en este artículo necesitará la versión 2.22.1 o posterior. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.

  1. Para crear un grupo de recursos, ejecute az group create.
  2. Cree una máquina virtual mediante la ejecución de az vm create. Use una distribución admitida en una región admitida.
  3. Instale la extensión de VM de inicio de sesión de Microsoft Entra con az vm extension set.

En el ejemplo siguiente, se implementa una VM y, a continuación, se instala la extensión para habilitar el inicio de sesión de Microsoft Entra para una VM Linux. Las extensiones de máquina virtual son aplicaciones pequeñas que realizan tareas de automatización y configuración posterior a la implementación en máquinas virtuales de Azure. Personalice el ejemplo según sea necesario para admitir los requisitos de prueba.

az group create --name AzureADLinuxVM --location southcentralus
az vm create \
    --resource-group AzureADLinuxVM \
    --name myVM \	
    --image Ubuntu2204 \
    --assign-identity \
    --admin-username azureuser \
    --generate-ssh-keys
az vm extension set \
    --publisher Microsoft.Azure.ActiveDirectory \
    --name AADSSHLoginForLinux \
    --resource-group AzureADLinuxVM \
    --vm-name myVM

La creación de la máquina virtual y los recursos auxiliares tarda unos minutos en realizarse.

La extensión AADSSHLoginForLinux se puede instalar en una VM Linux existente (distribución compatible) con un agente de VM en ejecución para habilitar la autenticación de Microsoft Entra. Si implementa esta extensión en una máquina virtual creada previamente, dicha máquina debe tener al menos 1 GB de memoria asignada o se producirá un error en la instalación.

provisioningState tendrá el valor Succeeded cuando la extensión esté correctamente instalada en la máquina virtual. La máquina virtual necesita un agente de máquina virtual en ejecución para instalar la extensión.

Configuración de asignaciones de roles para la máquina virtual

Ahora que ha creado la máquina virtual, debe asignar uno de los siguientes roles de Azure para determinar quién puede iniciar sesión en la máquina virtual. Para asignar estos roles, debe tener el rol Administrador de acceso a datos de máquina virtual o cualquier rol que incluya la acción de Microsoft.Authorization/roleAssignments/write, como el rol Administrador de control de acceso basado en roles. Sin embargo, si usa un rol diferente al de Administrador de acceso a datos de máquina virtual, se recomienda agregar una condición para reducir el permiso para crear asignaciones de roles.

  • Inicio de sesión de administrador de máquina virtual: los usuarios que tienen asignado este rol pueden iniciar sesión en una máquina virtual de Azure con privilegios de administrador.
  • Inicio de sesión de usuario de máquina virtual: los usuarios que tienen asignado este rol pueden iniciar sesión en una máquina virtual de Azure con los privilegios de un usuario normal.

Para permitir que un usuario inicie sesión en una máquina virtual mediante SSH, debe asignar el rol Inicio de sesión de administrador de máquina virtual o Inicio de sesión de usuario de máquina virtual al grupo de recursos que contiene la máquina virtual y sus recursos de red virtual, interfaz de red, dirección IP pública o equilibrador de carga asociados.

Un usuario de Azure que tenga asignados los roles Propietario o Colaborador para una VM no tiene automáticamente privilegios de inicio de sesión de Microsoft Entra para la VM mediante SSH. Hay una separación intencional (y auditada) entre el conjunto de personas que controlan máquinas virtuales frente al conjunto de personas que pueden acceder a las máquinas virtuales.

Hay dos maneras de configurar las asignaciones de roles para una máquina virtual:

  • Experiencia de Azure Portal
  • La experiencia de Azure Cloud Shell

Nota:

Los roles Inicio de sesión de administrador de máquina virtual e Inicio de sesión de usuario de máquina virtual usan dataActions y se pueden asignar en el ámbito del grupo de administración, la suscripción, el grupo de recursos o el recurso. Se recomienda asignar los roles a nivel de grupo de gestión, suscripción o grupo de recursos y no a nivel de VM individual. Esta práctica evita el riesgo de alcanzar el límite de asignaciones de roles de Azure por suscripción.

Azure portal

Para configurar las asignaciones de roles para las VM Linux habilitadas para Microsoft Entra ID:

  1. En Grupo de recursos, seleccione el grupo de recursos que contiene la máquina virtual y sus recursos de red virtual, interfaz de red, dirección IP pública o equilibrador de carga asociados.

  2. Seleccione Access Control (IAM) .

  3. Seleccione Agregar>Agregar asignación de roles para abrir la página Agregar asignación de roles.

  4. Asigne el siguiente rol. Para obtener los pasos detallados, consulte Asignación de roles de Azure mediante Azure Portal.

    Configuración Valor
    Role Inicio de sesión de administrador de máquina virtual o Inicio de sesión de usuario de máquina virtual
    Asignar acceso a Usuario, grupo, entidad de servicio o identidad administrada

    Screenshot that shows the page for adding a role assignment.

Transcurridos unos instantes, se asigna el rol a la entidad de seguridad en el ámbito seleccionado.

Azure Cloud Shell

En el ejemplo siguiente se usa az role assignment create para asignar el rol Inicio de sesión de administrador de Virtual Machine a la VM para el usuario de Azure actual. El nombre de usuario de la cuenta de Azure actual se obtiene con az account show y el ámbito se establece en la máquina virtual que se creó en un paso anterior con az vm show.

También puede asignar el ámbito en el nivel de grupo de recursos o suscripción. Se aplican los permisos de herencia de RBAC de Azure normales.

username=$(az account show --query user.name --output tsv)
rg=$(az group show --resource-group myResourceGroup --query id -o tsv)

az role assignment create \
    --role "Virtual Machine Administrator Login" \
    --assignee $username \
    --scope $rg

Nota:

Si su dominio de Microsoft Entra y el dominio del nombre de usuario de inicio de sesión no coinciden, debe especificar el identificador de objeto de su cuenta de usuario mediante --assignee-object-id, y no solo el nombre de usuario para --assignee. Puede obtener el identificador de objeto de su cuenta de usuario mediante az ad user list.

Para más información sobre cómo usar RBAC de Azure para administrar el acceso a los recursos de la suscripción de Azure, consulte Pasos para asignar un rol de Azure.

Instalación de la extensión de SSH para la CLI de Azure

Si usa Azure Cloud Shell, no se necesita ninguna otra configuración, ya que la versión mínima necesaria de la CLI de Azure y la extensión de SSH para la CLI de Azure ya están incluidas en el entorno de Cloud Shell.

Ejecute el siguiente comando para agregar la extensión de SSH a la CLI de Azure:

az extension add --name ssh

La versión mínima necesaria para la extensión es 0.1.4. Compruebe la versión instalada con el comando siguiente:

az extension show --name ssh

Aplicación de las directivas de acceso condicional

Puede aplicar las directivas de acceso condicional que están habilitadas con el inicio de sesión de Microsoft Entra, por ejemplo:

  • Requerir la autenticación multifactor.
  • Requerir un dispositivo compatible o dispositivo unido a Microsoft Entra híbrido para el dispositivo que ejecuta el cliente SSH.
  • Comprobar los riesgos antes de autorizar el acceso a las máquinas virtuales Linux en Azure.

La aplicación que aparece en la directiva de acceso condicional se llama Inicio de sesión de máquina virtual Linux de Azure.

Nota:

La aplicación de directivas de acceso condicional que requieren el cumplimiento del dispositivo o la unión a Microsoft Entra híbrido en el dispositivo que ejecuta el cliente SSH solo funciona con la CLI de Azure que se ejecuta en Windows y macOS. No se admite cuando se usa la CLI de Azure en Linux o Azure Cloud Shell.

Falta aplicación

Si falta la aplicación de inicio de sesión de máquina virtual Linux de Azure en el acceso condicional, asegúrese de que la aplicación no esté en el inquilino:

  1. Inicie sesión en el Centro de administración de Microsoft Entra como Administrador de aplicaciones en la nube.
  2. Vaya a Aplicaciones de identidad>Aplicaciones>Empresariales.
  3. Quite los filtros para ver todas las aplicaciones y busque la Máquina virtual. Si no ve el inicio de sesión de máquina virtual de Linux de Microsoft Azure como resultado, falta la entidad de servicio del inquilino.

Otra manera de comprobarlo es a través de Graph PowerShell:

  1. Instale el SDK de Graph PowerShell si aún no lo ha hecho.

  2. Escriba el comando Connect-MgGraph -Scopes "ServicePrincipalEndpoint.ReadWrite.All","Application.ReadWrite.All".

  3. Inicie sesión con una cuenta de administrador global.

  4. Dé su consentimiento a la petición que solicita su permiso.

  5. Escriba el comando Get-MgServicePrincipal -ConsistencyLevel eventual -Search '"DisplayName:Microsoft Azure Linux Virtual Machine Sign-In"'.

    Si este comando no da como resultado ninguna salida y le devuelve al símbolo del sistema de PowerShell, puede crear la entidad de servicio con el siguiente comando de PowerShell de Microsoft Graph: New-MgServicePrincipal -AppId ce6ff14a-7fdc-4685-bbe0-f6afdfcfa8e0.

    La salida correcta mostrará que se han creado el identificador de la aplicación y el nombre de la aplicación para el inicio de sesión de máquina virtual Linux de Azure.

  6. Cierre la sesión de PowerShell de Microsoft Graph con el siguiente comando: Disconnect-MgGraph.

Inicio de sesión mediante una cuenta de usuario de Microsoft Entra para conectarse mediante SSH en la VM Linux

Inicio de sesión mediante la CLI de Azure

Escriba az login. Este comando abre una ventana del explorador, donde puede iniciar sesión con su cuenta de Microsoft Entra.

az login 

A continuación, escriba az ssh vm. En el ejemplo siguiente se resuelve automáticamente la dirección IP adecuada para la máquina virtual.

az ssh vm -n myVM -g AzureADLinuxVM

Si se le solicita, escriba las credenciales de inicio de sesión de Microsoft Entra en la página de inicio de sesión, realice la autenticación multifactor y satisfaga las comprobaciones del dispositivo. Solo se le solicitará si la sesión de la CLI de Azure no cumple ya los criterios de acceso condicional necesarios. Cierre la ventana del explorador, vuelva al símbolo del sistema de SSH y se conectará automáticamente a la máquina virtual.

Ahora ha iniciado sesión en la máquina virtual Linux con los permisos de rol asignados, por ejemplo, Usuario de máquina virtual o Administrador de máquina virtual. Si la cuenta de usuario tiene asignado el rol Inicio de sesión de administrador de máquina virtual, puede usar sudo para ejecutar los comandos que requieren privilegios raíz.

Inicio de sesión con Azure Cloud Shell

Puede usar Azure Cloud Shell para conectarse a las VM sin necesidad de instalar nada localmente en la máquina cliente. Para iniciar Cloud Shell, seleccione el icono del shell en la esquina superior derecha de Azure Portal.

Cloud Shell se conecta automáticamente a una sesión en el contexto del usuario que ha iniciado sesión. Ahora, ejecute de nuevo az login y pase el flujo de inicio de sesión interactivo:

az login

Después, puede usar los comandos az ssh vm normales para conectarse mediante el nombre y el grupo de recursos o la dirección IP de la máquina virtual:

az ssh vm -n myVM -g AzureADLinuxVM

Nota:

Cuando se usa Azure Cloud Shell, no se admite la aplicación de directivas de acceso condicional que requieran el cumplimiento del dispositivo o la unión a Microsoft Entra híbrido.

Inicio de sesión mediante una entidad de servicio de Microsoft Entra para conectarse mediante SSH a la VM Linux

La CLI de Azure admite la autenticación con una entidad de servicio en lugar de con una cuenta de usuario. Dado que las entidades de servicio no están vinculadas a ningún usuario determinado, los clientes pueden usarlas para conectarse mediante SSH a una máquina virtual para admitir cualquier escenario de automatización que puedan tener. La entidad de servicio debe tener asignados derechos de administrador o usuario de máquina virtual. Asigne permisos en el nivel de suscripción o grupo de recursos.

En el ejemplo siguiente se asignarán derechos de administrador de máquina virtual a la entidad de servicio en el nivel de grupo de recursos. Reemplace los marcadores de posición del identificador de objeto de la entidad de servicio, el identificador de la suscripción y el nombre del grupo de recursos.

az role assignment create \
    --role "Virtual Machine Administrator Login" \
    --assignee-object-id <service-principal-objectid> \
    --assignee-principal-type ServicePrincipal \
    --scope “/subscriptions/<subscription-id>/resourceGroups/<resourcegroup-name>"

Use el ejemplo siguiente para autenticarse en la CLI de Azure mediante la entidad de servicio. Para más información, consulte el artículo Inicio de sesión con una entidad de servicio.

az login --service-principal -u <sp-app-id> -p <password-or-cert> --tenant <tenant-id>

Una vez completada la autenticación con una entidad de servicio, use los comandos SSH de la CLI de Azure normales para conectarse a la máquina virtual:

az ssh vm -n myVM -g AzureADLinuxVM

Exportación de la configuración de SSH para su uso con clientes SSH compatibles con OpenSSH

El inicio de sesión en VM Linux de Azure con Microsoft Entra ID admite la exportación del certificado y la configuración de OpenSSH. Esto significa que puede usar cualquier cliente de SSH que admita certificados basados en OpenSSH para iniciar sesión mediante Microsoft Entra ID. En el ejemplo siguiente, se exporta la configuración de todas las direcciones IP asignadas a la máquina virtual:

az ssh config --file ~/.ssh/config -n myVM -g AzureADLinuxVM

Como alternativa, puede exportar la configuración especificando solo la dirección IP. Reemplace la dirección IP del ejemplo siguiente por la dirección IP pública o privada de la máquina virtual. (Debe aportar su propia conectividad para direcciones IP privadas). Escriba az ssh config -h para obtener ayuda con este comando.

az ssh config --file ~/.ssh/config --ip 10.11.123.456

A continuación, puede conectarse a la máquina virtual mediante el uso normal de OpenSSH. La conexión se puede realizar a través de cualquier cliente SSH que use OpenSSH.

Ejecución de sudo con el inicio de sesión de Microsoft Entra

Una vez que los usuarios con el rol de administrador de máquinas virtuales asignado correctamente se conecten mediante SSH a una máquina virtual Linux, podrán ejecutar sudo sin ningún otro requisito de interacción o autenticación. Los usuarios que tengan asignado el rol de usuario de máquina virtual no podrán ejecutar sudo.

Conexión a máquinas virtuales de conjuntos de escalado de máquinas virtuales

Se admiten los conjuntos de escalado de máquinas virtuales, pero los pasos son ligeramente diferentes para habilitar y conectarse a las máquinas virtuales de un conjunto de escalado de máquinas virtuales:

  1. Cree un conjunto de escalado de máquinas virtuales o elija uno que ya exista. Habilite una identidad administrada asignada por el sistema para el conjunto de escalado de máquinas virtuales:

    az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
    
  2. Instale la extensión de Microsoft Entra en el conjunto de escalado de máquinas virtuales:

    az vmss extension set --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLoginForLinux --resource-group AzureADLinuxVM --vmss-name myVMSS
    

Los conjuntos de escalado de máquinas virtuales no suelen tener direcciones IP públicas. Debe tener conectividad con ellos desde otra máquina que pueda acceder a su red virtual de Azure. En este ejemplo, se muestra cómo usar la dirección IP privada de una máquina virtual de un conjunto de escalado de máquinas virtuales para conectarse desde una máquina de la misma red virtual:

az ssh vm --ip 10.11.123.456

Nota

No puede determinar automáticamente las direcciones IP de las máquinas virtuales del conjunto de escalado de máquinas virtuales mediante los modificadores --resource-group y --name.

Migración desde la versión anterior (versión preliminar)

Si usa la versión anterior del inicio de sesión de Microsoft Entra para Linux que se basaba en el flujo de código del dispositivo, complete los pasos siguientes mediante la CLI de Azure:

  1. Desinstale la extensión AADLoginForLinux en la máquina virtual:

    az vm extension delete -g MyResourceGroup --vm-name MyVm -n AADLoginForLinux
    

    Nota:

    La desinstalación de la extensión puede producir un error si hay algún usuario de Microsoft Entra que tenga actualmente la sesión iniciada en la VM. Asegúrese primero de que todos los usuarios hayan cerrado sesión.

  2. Habilite una identidad administrada asignada por el sistema en la máquina virtual:

    az vm identity assign -g myResourceGroup -n myVm
    
  3. Instale la extensión AADSSHLoginForLinux en la máquina virtual:

    az vm extension set \
        --publisher Microsoft.Azure.ActiveDirectory \
        --name AADSSHLoginForLinux \
        --resource-group myResourceGroup \
        --vm-name myVM
    

Uso de Azure Policy para cumplir los estándares y evaluar el cumplimiento

Use Azure Policy para:

  • Asegúrese de que el inicio de sesión de Microsoft Entra esté habilitado para las máquinas virtuales Linux nuevas y existentes.
  • Evaluar el cumplimiento de su entorno a gran escala en un panel de cumplimiento.

Con esta funcionalidad, puede usar muchos niveles de cumplimiento. Puede marcar las VM Linux nuevas y existentes de su entorno que no tengan habilitado el inicio de sesión de Microsoft Entra. También puede usar Azure Policy para implementar la extensión de Microsoft Entra en las VM Linux nuevas que no tengan habilitado el inicio de sesión de Microsoft Entra, así como para corregir las VM Linux existentes con el mismo estándar.

Además de estas funcionalidades, también puede usar Azure Policy para detectar y marcar las máquinas virtuales Linux que tienen cuentas locales no aprobadas creadas en sus máquinas. Para más información, consulte Azure Policy.

Solución de problemas con el inicio de sesión

Use las secciones siguientes para corregir los errores comunes que puedan producirse al intentar conectarse mediante SSH con las credenciales de Microsoft Entra.

No se pudo recuperar el token de la caché local

Si recibe un mensaje que indica que no se pudo recuperar el token de la caché local, debe ejecutar az login de nuevo y pasar por un flujo de inicio de sesión interactivo. Revise la sección sobre el inicio de sesión con Azure Cloud Shell.

Acceso denegado: no hay ningún rol de Azure asignado

Si observa el error "Rol de Azure no asignado" en el símbolo del sistema de SSH, compruebe que ha configurado directivas de RBAC de Azure para la máquina virtual que concede al usuario los roles Inicio de sesión de administrador de máquina virtual o Inicio de sesión de usuario de máquina virtual. Si tiene problemas con las asignaciones de roles de Azure, consulte el artículo Solución de problemas de RBAC de Azure.

Problemas al eliminar la extensión anterior (AADLoginForLinux)

Si se produce un error en los scripts de desinstalación, la extensión puede quedarse bloqueada en un estado de transición. Cuando esto sucede, la extensión puede dejar paquetes que se supone que se desinstalan durante su eliminación. En esos casos, es mejor desinstalar manualmente los paquetes antiguos y, a continuación, intentar ejecutar el comando az vm extension delete.

Para desinstalar los paquetes antiguos:

  1. Inicie sesión como usuario local con privilegios de administrador.
  2. Asegúrese de que no haya usuarios con la sesión iniciada en Microsoft Entra. Llame al comando who -u para ver quién ha iniciado sesión. A continuación, use sudo kill <pid> para todos los procesos de sesión notificados por el comando anterior.
  3. Ejecute sudo apt remove --purge aadlogin (Ubuntu/Debian), sudo yum remove aadlogin (RHEL o CentOS), o bien sudo zypper remove aadlogin (openSUSE o SLES).
  4. Si se produce un error en el comando, pruebe las herramientas de bajo nivel con scripts deshabilitados:
    1. Para Ubuntu/Debian, ejecute sudo dpkg --purge aadlogin. Si se siguen produciendo errores debido al script, elimine el archivo /var/lib/dpkg/info/aadlogin.prerm y vuelva a intentarlo.
    2. Para todo lo demás, ejecute rpm -e --noscripts aadogin.
  5. Repita los pasos del 3 al 4 para el paquete aadlogin-selinux.

Errores de instalación de la extensión

La instalación de la extensión de máquina virtual AADSSHLoginForLinux en equipos existentes puede producir un error con uno de los siguientes códigos de error conocidos.

Código de salida que no es cero: 22

Si recibe el código de salida 22, el estado de la extensión de máquina virtual AADSSHLoginForLinux se muestra como En transición en el portal.

Este error se produce porque se requiere una identidad administrada asignada por el sistema.

Los pasos de solución son:

  1. Desinstale la extensión con el error.
  2. Habilite una identidad administrada asignada por el sistema en la máquina virtual de Azure.
  3. Vuelva a ejecutar el comando de instalación de la extensión.

Código de salida que no es cero: 23

Si recibe el código de salida 23, el estado de la extensión de máquina virtual AADSSHLoginForLinux se muestra como En transición en el portal.

Este error se produce cuando la extensión de máquina virtual AADLoginForLinux anterior todavía está instalada.

La solución es desinstalar la extensión de máquina virtual AADLoginForLinux anterior de la máquina virtual. El estado de la nueva extensión de máquina virtual AADSSHLoginForLinux cambiará a El aprovisionamiento se realizó correctamente en el portal.

Errores de instalación al usar un proxy HTTP

La extensión necesita una conexión HTTP para instalar paquetes y comprobar la existencia de una identidad del sistema. Ejecuta en el contexto de walinuxagent.service y requiere un cambio para informar al agente sobre la configuración del proxy. Abra el archivo /lib/systemd/system/walinuxagent.service en la máquina de destino y agregue la siguiente línea después de [Service]:

[Service]
Environment="http_proxy=http://proxy.example.com:80/"
Environment="https_proxy=http://proxy.example.com:80/"
Environment="no_proxy=169.254.169.254"

Reinicie el agente (sudo systemctl restart walinuxagent). Ahora inténtelo de nuevo.

El comando az ssh vm produce el error KeyError access_token

Si se produce un error en el comando az ssh vm, está usando una versión obsoleta del cliente de la CLI de Azure.

La solución es actualizar el cliente de la CLI de Azure a la versión 2.21.0 o posterior.

La conexión SSH está cerrada

Después de que un usuario inicie sesión correctamente mediante az login, la conexión a la máquina virtual mediante az ssh vm -ip <address> o az ssh vm --name <vm_name> -g <resource_group> podría producir el error "Conexión cerrada por <dirección_IP> puerto 22".

Una causa de este error es que el usuario no está asignado al rol Inicio de sesión de administrador de máquina virtual o Inicio de sesión de usuario de máquina virtual dentro del ámbito de esta máquina virtual. En ese caso, la solución consiste en agregar al usuario a uno de esos roles de RBAC de Azure dentro del ámbito de esta máquina virtual.

También se puede producir este error si el usuario tiene el rol de RBAC de Azure necesario, pero se ha deshabilitado la identidad administrada asignada por el sistema en la máquina virtual. En ese caso, realice estas acciones:

  1. Habilite una identidad administrada asignada por el sistema en la máquina virtual.
  2. Permita que pasen varios minutos antes de que el usuario intente conectarse mediante az ssh vm --ip <ip_address>.

Problemas de conexión con conjuntos de escalado de máquinas virtuales

Las conexiones de máquina virtual con conjuntos de escalado de máquinas virtuales pueden producir un error si las instancias del conjunto de escalado ejecutan un modelo anterior.

La actualización de las instancias del conjunto de escalado al modelo más reciente puede resolver el problema, especialmente si no se ha realizado una actualización desde que se instaló la extensión de inicio de sesión de Microsoft Entra. La actualización de una instancia aplica una configuración estándar del conjunto de escalado a la instancia individual.

Las instrucciones AllowGroups o DenyGroups de sshd_config provocan un error en el primer inicio de sesión para los usuarios de Microsoft Entra

Si sshd_config contiene instrucciones AllowGroups o DenyGroups, se produce un error en el primer inicio de sesión para los usuarios de Microsoft Entra. Si la instrucción se agregó después de que los usuarios iniciaran sesión correctamente, podrán iniciar sesión.

Una solución consiste en quitar las instrucciones AllowGroups y DenyGroups de sshd_config.

Otra solución consiste en mover AllowGroups y DenyGroups a una sección match user de sshd_config. Asegúrese de que la plantilla de coincidencia excluya los usuarios de Microsoft Entra.

Obtención de permiso denegado al intentar conectarse desde Azure Shell a una máquina virtual Linux Red Hat/Oracle/Centos 7.X.

La versión del servidor OpenSSH de la máquina virtual 7.4 de destino es demasiado antigua. Versión incompatible con la versión 8.8 del cliente de OpenSSH. Consulte Certificados RSA SHA256 que ya no funcionan para obtener más información.

Solución:

  • Use la opción "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" del comando az ssh vm .
az ssh vm -n myVM -g MyResourceGroup -- -A -o "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
  • Agregar la opción "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" en /home/<user>/.ssh/config file.

Agregue el "PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com" al archivo de configuración del cliente.

Host *
PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com

Pasos siguientes