Se connecter à une machine virtuelle Linux dans Azure en utilisant Microsoft Entra ID et OpenSSH

Pour améliorer la sécurité des machines virtuelles Linux dans Azure, vous pouvez intégrer l’authentification Microsoft Entra. Vous pouvez désormais utiliser Microsoft Entra ID comme plateforme d’authentification principale et autorité de confiance pour établir une connexion SSH à une machine virtuelle Linux en tirant parti de Microsoft Entra ID et de l’authentification basée sur un certificat OpenSSH. Cette fonctionnalité permet aux organisations de gérer l’accès aux machines virtuelles avec le contrôle d’accès en fonction du rôle (RBAC) Azure et les stratégies d’accès conditionnel.

Cet article vous explique comment créer et configurer une machine virtuelle Linux et vous connecter avec Microsoft Entra ID en utilisant l’authentification basée sur un certificat OpenSSH.

L’utilisation de Microsoft Entra ID avec l’authentification basée sur un certificat OpenSSH pour se connecter à des machines virtuelles Linux dans Azure présente de nombreux avantages en matière de sécurité. Notamment :

  • Utilisez vos informations d’identification Microsoft Entra pour vous connecter aux machines virtuelles Linux Azure.
  • Bénéficiez d’une authentification par clé SSH sans avoir à distribuer de clés SSH aux utilisateurs ni à provisionner de clés publiques SSH sur aucune machine virtuelle Linux Azure que vous déployez. Cette expérience est beaucoup plus simple que de devoir s’inquiéter de la prolifération de clés publiques SSH obsolètes susceptibles d’entraîner un accès non autorisé.
  • Réduisez votre dépendance à l’égard des comptes administrateur locaux, du vol d’identifiants et des identifiants faibles.
  • Contribuez à sécuriser les machines virtuelles Linux en configurant des stratégies relatives à la complexité et à la durée de vie du mot de passe pour Microsoft Entra ID.
  • Avec RBAC, spécifiez qui peut se connecter à une machine virtuelle en tant qu’utilisateur standard ou avec des privilèges d’administrateur. Lorsque des utilisateurs rejoignent votre équipe, vous pouvez mettre à jour la stratégie RBAC Azure pour la machine virtuelle afin d’accorder les accès appropriés. Lorsque des employés quittent votre organisation et que leurs comptes d’utilisateur sont désactivés ou supprimés de Microsoft Entra ID, ils n’ont plus accès à vos ressources.
  • Avec l’accès conditionnel, configurez des stratégies pour exiger une authentification multifacteur ou exiger que l’appareil de votre client soit managé (par exemple, conforme ou joint à Microsoft Entra hybride) avant de pouvoir l’utiliser pour établir une connexion SSH sur des machines virtuelles Linux.
  • Utilisez des stratégies de déploiement et d’audit Azure pour exiger une connexion Microsoft Entra pour des machines virtuelles Linux et pour signaler des comptes locaux non approuvés.

La connexion à des machines virtuelles Linux avec Microsoft Entra ID fonctionne pour les clients qui utilisent les services de fédération Active Directory (AD FS).

Régions Azure et distributions Linux prises en charge

Les distributions Linux suivantes sont actuellement prises en charge pour les déploiements dans une région prise en charge :

Distribution Version
Common Base Linux Mariner (CBL-Mariner) CBL-Mariner 1, CBL-Mariner 2
AlmaLinux AlmaLinux 8, AlmaLinux 9
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
Red Hat Enterprise Linux (RHEL) RHEL 7.4 à RHEL 7.9, RHEL 8.3+, RHEL 9.0+
Rocky Rocky 8, Rocky 9
SUSE Linux Enterprise Server (SLES) SLES 12, SLES 15.1+
Ubuntu Ubuntu 16.04 à Ubuntu 24.04

Cette fonctionnalité prend actuellement en charge les régions Azure suivantes :

  • Azure Global
  • Azure Government
  • Microsoft Azure exploité par 21Vianet

L’utilisation de l’extension SSH pour Azure CLI sur les clusters Azure Kubernetes Service (AKS) n’est pas prise en charge. Pour plus d’informations, consultez Stratégies de support pour AKS.

Si vous choisissez d’installer et d’utiliser Azure CLI localement, vous devez utiliser la version 2.22.1 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez effectuer une installation ou une mise à niveau, consultez Installer Azure CLI.

Remarque

Cette fonctionnalité est également disponible pour les serveurs avec Azure Arc.

Respectez les exigences de connexion avec Microsoft Entra ID en tirant parti de l’authentification basée sur un certificat OpenSSH

Pour activer la connexion Microsoft Entra en utilisant l’authentification basée sur un certificat SSH pour des machines virtuelles Linux dans Azure, veillez à respecter les exigences suivantes en matière de réseau, de machine virtuelle et de client (client SSH).

Réseau

La configuration du réseau de machines virtuelles doit autoriser l’accès sortant aux points de terminaison suivants sur le port TCP 443.

Azure Global :

  • https://packages.microsoft.com : Pour l’installation et les mises à niveau des packages.
  • http://169.254.169.254 : Point de terminaison Azure Instance Metadata Service.
  • https://login.microsoftonline.com : Pour les flux d’authentification basés sur PAM (Pluggable Authentication Modules).
  • https://pas.windows.net : Pour les flux RBAC Azure.

Azure Government :

  • https://packages.microsoft.com : Pour l’installation et les mises à niveau des packages.
  • http://169.254.169.254 : Point de terminaison Azure Instance Metadata Service.
  • https://login.microsoftonline.us : Pour les flux d’authentification basés sur PAM.
  • https://pasff.usgovcloudapi.net : Pour les flux RBAC Azure.

Microsoft Azure exploité par 21Vianet :

  • https://packages.microsoft.com : Pour l’installation et les mises à niveau des packages.
  • http://169.254.169.254 : Point de terminaison Azure Instance Metadata Service.
  • https://login.chinacloudapi.cn : Pour les flux d’authentification basés sur PAM.
  • https://pas.chinacloudapi.cn : Pour les flux RBAC Azure.

Machine virtuelle

Veillez à ce que votre machine virtuelle soit configurée avec les fonctionnalités suivantes :

  • Identité managée affectée par le système. Cette option est sélectionnée automatiquement lorsque vous utilisez le Portail Azure pour créer des machines virtuelles et sélectionnez l’option de connexion Microsoft Entra. Vous pouvez également activer l’identité managée affectée par le système sur une machine virtuelle nouvelle ou existante à l’aide d’Azure CLI.
  • aadsshlogin et aadsshlogin-selinux (selon ce qui est approprié). Ces packages sont installés avec l’extension de machine virtuelle AADSSHLoginForLinux. L’extension est installée lorsque vous utilisez le Portail Azure ou l’interface Azure CLI pour créer des machines virtuelles et activer la connexion Microsoft Entra (onglet Gestion).

Client

Veillez à ce que votre client respecte les exigences suivantes :

  • Prise en charge du client SSH pour les certificats basés sur OpenSSH pour l’authentification. Vous pouvez utiliser Azure CLI (2.21.1 ou version ultérieure) avec OpenSSH (inclus dans Windows 10 version 1803 ou ultérieure) ou Azure Cloud Shell pour répondre à cette exigence.

  • Extension SSH pour Azure CLI. Vous pouvez installer cette extension en utilisant az extension add --name ssh. Vous n’avez pas besoin d’installer cette extension lorsque vous utilisez Azure Cloud Shell, car elle est préinstallée.

    Si vous utilisez un client SSH autre qu’Azure CLI ou Azure Cloud Shell qui prend en charge les certificats OpenSSH, vous devez encore utiliser Azure CLI avec l’extension SSH pour récupérer les certificats SSH éphémères et, si vous le souhaitez, un fichier de configuration. Vous pouvez ensuite utiliser le fichier de configuration avec votre client SSH.

  • Connectivité TCP du client à l’adresse IP publique ou l’adresse IP privée de la machine virtuelle. (Il est également possible d’utiliser ProxyCommand ou un transfert SSH vers une machine.)

Important

Les clients SSH basés sur PuTTY prennent désormais en charge les certificats OpenSSH et peuvent être utilisés pour se connecter avec l’authentification basée sur un certificat OpenSSH de Microsoft Entra.

Activer la connexion Microsoft Entra pour une machine virtuelle Linux dans Azure

Pour utiliser la connexion Microsoft Entra pour une machine virtuelle Linux dans Azure, vous devez d’abord activer l’option de connexion Microsoft Entra pour votre machine virtuelle Linux. Vous configurez ensuite les attributions de rôles Azure pour les utilisateurs autorisés à se connecter à la machine virtuelle. Enfin, vous utilisez le client SSH qui prend en charge OpenSSH, tel qu’Azure CLI ou Azure Cloud Shell, pour établir une connexion SSH à votre machine virtuelle Linux.

Deux méthodes vous permettent d’activer la connexion Microsoft Entra pour votre machine virtuelle Linux :

  • L’expérience du portail Azure lors de la création d’une machine virtuelle Linux
  • L’expérience Azure Cloud Shell lorsque vous créez une machine virtuelle Linux ou que vous utilisez une machine virtuelle existante

Portail Azure

Vous pouvez activer la connexion Microsoft Entra pour toutes les distributions Linux prises en charge en utilisant le Portail Azure.

Par exemple, pour créer une machine virtuelle de support à long terme (LTS) Ubuntu Server 18.04 dans Azure avec la connexion Microsoft Entra :

  1. Connectez-vous au Portail Azure à l’aide d’un compte disposant d’un accès pour créer des machines virtuelles, puis sélectionnez + Créer une ressource.
  2. Sélectionnez Créer sous Ubuntu Server 18.04 LTS dans la vue Populaire.
  3. Dans l’onglet Gestion :
    1. Cochez la case Connexion avec Microsoft Entra ID.
    2. Veillez à ce que la case à cocher Identité managée affectée par le système soit cochée.
  4. Parcourez le reste de l’expérience de création d’une machine virtuelle. Vous devrez créer un compte administrateur avec un nom d’utilisateur et un mot de passe ou une clé publique SSH.

Azure Cloud Shell

Azure Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour exécuter les étapes de cet article. Il contient des outils Azure courants préinstallés et configurés pour être utilisés avec votre compte. Sélectionnez simplement le bouton Copier pour copier le code, collez-le dans Cloud Shell et appuyez sur Entrée pour l’exécuter.

Cloud Shell peut être ouvert de plusieurs façons :

  • Sélectionnez Essayer dans le coin supérieur droit d’un bloc de code.
  • Ouvrez Cloud Shell dans votre navigateur.
  • Sélectionnez le bouton Cloud Shell dans le menu en haut à droite du Portail Azure.

Si vous choisissez d’installer et d’utiliser Azure CLI localement, cet article nécessite l’exécution de la version 2.22.1 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez effectuer une installation ou une mise à niveau, consultez Installer Azure CLI.

  1. Créez un groupe de ressources en exécutant az group create.
  2. Créez une machine virtuelle en exécutant az vm create. Utilisez une distribution prise en charge dans une région prise en charge.
  3. Installez l’extension de machine virtuelle de connexion Microsoft Entra en utilisant az vm extension set.

L’exemple suivant déploie une machine virtuelle, puis installe l’extension pour activer la connexion Microsoft Entra d’une machine virtuelle Linux. Les extensions de machine virtuelle sont de petites applications permettant d’exécuter des tâches de configuration et d’automatisation post-déploiement sur des machines virtuelles Azure. Personnalisez l’exemple comme nécessaire pour répondre à vos exigences en matière de tests.

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 création de la machine virtuelle et des ressources de support ne nécessite que quelques minutes.

L’extension AADSSHLoginForLinux peut être installée sur une machine virtuelle Linux existante (distribution prise en charge) avec un agent de machine virtuelle en cours d’exécution pour activer l’authentification Microsoft Entra. Si vous déployez cette extension sur une machine virtuelle créée précédemment, la machine virtuelle doit avoir au moins 1 Go de mémoire allouée ou l’installation échouera.

La valeur provisioningState de Succeeded s’affiche lorsque l’extension est correctement installée sur la machine virtuelle. La machine virtuelle doit avoir un agent de machine virtuelle en cours d’exécution pour installer l’extension.

Configurer des attributions de rôle pour la machine virtuelle

Maintenant que vous avez créé la machine virtuelle, vous devez attribuer l’un des rôles Azure suivants pour déterminer qui peut s’y connecter. Pour attribuer ces rôles, vous devez avoir le rôle Administrateur d’accès aux données de machine virtuelle ou tout rôle qui inclut l’action Microsoft.Authorization/roleAssignments/write comme le rôle Administrateur de contrôle d’accès en fonction du rôle. Toutefois, si vous utilisez un autre rôle que celui d’Administrateur d’accès aux données de machine virtuelle, nous vous recommandons d’ajouter une condition pour réduire l’autorisation à la création d’attributions de rôle.

  • Connexion d’administrateur de machine virtuelle : les utilisateurs auxquels ce rôle est attribué peuvent se connecter à une machine virtuelle Azure avec des privilèges d’administrateur.
  • Connexion d’utilisateur de machine virtuelle : les utilisateurs auxquels ce rôle est attribué peuvent se connecter à une machine virtuelle Azure avec des privilèges d’utilisateur standard.

Pour permettre à un utilisateur de se connecter à une machine virtuelle via SSH, vous devez attribuer le rôle Connexion d’administrateur de machine virtuelle ou Connexion d’utilisateur de machine virtuelle sur le groupe de ressources qui contient la machine virtuelle et son réseau virtuel, son interface réseau, son adresse IP publique ou ses ressources d’équilibreur de charge associés.

Un utilisateur Azure auquel le rôle Propriétaire ou Collaborateur est attribué pour une machine virtuelle ne possède pas automatiquement des privilèges de connexion Microsoft Entra à la machine virtuelle via SSH. Il existe une séparation intentionnelle (et auditée) entre l’ensemble des personnes qui contrôlent les machines virtuelles et l’ensemble des personnes qui peuvent accéder aux machines virtuelles.

Il existe deux façons de configurer les attributions de rôles pour une machine virtuelle :

  • Utilisation du portail Azure
  • Expérience Azure Cloud Shell

Remarque

Les rôles Connexion d’administrateur de machine virtuelle et Connexion d’utilisateur de machine virtuelle utilisent dataActions et peuvent être attribués au niveau du groupe d’administration, de l’abonnement, du groupe de ressources ou de la ressource. Nous vous recommandons d’attribuer les rôles au niveau du groupe d’administration, de l’abonnement ou du groupe de ressources, et non au niveau des machines virtuelles individuelles. Cette pratique évite le risque d’atteindre la limite des attributions de rôle Azure par abonnement.

Portail Azure

Pour configurer les attributions de rôles pour vos machines virtuelles Linux avec Microsoft Entra ID :

  1. Pour Groupe de ressources, sélectionnez le groupe de ressources qui contient la machine virtuelle et son réseau virtuel, son interface réseau, son adresse IP publique ou sa ressource d’équilibreur de charge associée.

  2. Sélectionnez Contrôle d’accès (IAM).

  3. Sélectionnez Ajouter>Ajouter une attribution de rôle pour ouvrir la page Ajouter une attribution de rôle.

  4. Attribuez le rôle suivant. Pour connaître la procédure détaillée, consultez Attribuer des rôles Azure à l’aide du portail Azure.

    Paramètre Valeur
    Rôle Connexion d’administrateur de machine virtuelle ou Connexion d’utilisateur de machine virtuelle
    Affecter l’accès à Utilisateur, groupe, principal de service ou identité managée

    Capture d’écran montrant la page d’ajout d’une attribution de rôle.

Après quelques moments, le principal de sécurité est attribué au rôle dans l’étendue sélectionnée.

Azure Cloud Shell

L’exemple suivant illustre l’utilisation de la commande az role assignment create pour attribuer le rôle Connexion de l’administrateur de machine virtuelle à la machine virtuelle de votre utilisateur Azure actuel. Vous obtenez le nom d’utilisateur de votre compte Azure actuel en utilisant az account show, et vous définissez l’étendue sur la machine virtuelle créée lors d’une étape précédente en utilisant az vm show.

Vous pouvez également affecter l’étendue au niveau d’un groupe de ressources ou d’un abonnement. Les autorisations d’héritage RBAC Azure normales s’appliquent.

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

Remarque

Si votre domaine Microsoft Entra et le domaine de votre nom d’utilisateur de connexion ne correspondent pas, vous devez spécifier l’identifiant d’objet de votre compte d’utilisateur en utilisant --assignee-object-id, et non uniquement le nom d’utilisateur pour --assignee. Vous pouvez obtenir l’ID d’objet de votre compte d’utilisateur en utilisant az ad user list.

Pour plus d’informations sur l’utilisation de RBAC Azure pour gérer l’accès à vos ressources d’abonnement Azure, consultez Procédure d’attribution d’un rôle Azure.

Installer l’extension SSH pour Azure CLI

Si vous utilisez Azure Cloud Shell, aucune autre configuration n’est nécessaire, car la version minimale requise d’Azure CLI et de l’extension SSH pour Azure CLI sont déjà incluses dans l’environnement Cloud Shell.

Exécutez la commande suivante pour ajouter l’extension SSH pour Azure CLI :

az extension add --name ssh

La version minimale requise pour l’extension est la version 0.1.4. Vérifiez la version installée à l’aide de la commande suivante :

az extension show --name ssh

Appliquer les stratégies d’accès conditionnel

Vous pouvez mettre en œuvre des stratégies d’accès conditionnel qui sont activées avec la connexion Microsoft Entra, telles que :

  • Exiger l’authentification multifacteur.
  • Exiger un appareil conforme ou joint à Microsoft Entra hybride pour l’appareil exécutant le client SSH.
  • Rechercher les risques avant d’autoriser l’accès aux machines virtuelles Linux dans Azure.

L’application qui s’affiche dans la stratégie d’accès conditionnel est appelée Connexion à la machine virtuelle Linux Azure.

Remarque

La mise en œuvre de la stratégie d’accès conditionnel qui nécessite la conformité de l’appareil ou la jointure Microsoft Entra hybride sur l’appareil qui exécute le client SSH fonctionne uniquement avec l’interface Azure CLI qui s’exécute sur Windows et macOS. Elle n’est pas prise en charge lors de l’utilisation d’Azure CLI sur Linux ou Azure Cloud Shell.

Application manquante

Si l’application Connexion à la machine virtuelle Linux Azure est manquante dans l’accès conditionnel, veillez à ce que l’application ne figure pas dans le client :

  1. Connectez-vous au Centre d’administration Microsoft Entra au minimum en tant qu’Administrateur d’application cloud.
  2. Accédez à Identité>Applications>Applications d’entreprise.
  3. Supprimez les filtres pour afficher toutes les applications et recherchez Machine virtuelle. Si vous ne voyez pas la connexion de machine virtuelle Linux Microsoft Azure en conséquence, le principal de service est manquant dans le client.

Se connecter en utilisant un compte d’utilisateur Microsoft Entra pour établir une connexion SSH sur la machine virtuelle Linux

Se connecter à l’aide d’Azure CLI

Saisissez az login. Cette commande ouvre une fenêtre du navigateur, dans laquelle vous pouvez vous connecter en tirant parti de votre compte Microsoft Entra.

az login 

Puis saisissez az ssh vm. L’exemple suivant résout automatiquement l’adresse IP appropriée pour la machine virtuelle.

az ssh vm -n myVM -g AzureADLinuxVM

Si vous y êtes invité, entrez vos identifiants de connexion Microsoft Entra dans la page de connexion, effectuez une authentification multifacteur et/ou répondez aux vérifications de l’appareil. Vous y serez invité uniquement si votre session Azure CLI n’est pas déjà conforme aux critères d’accès conditionnel requis. Fermez la fenêtre du navigateur, revenez à l’invite SSH et vous serez automatiquement connecté à la machine virtuelle.

Vous êtes à présent connecté à la machine virtuelle Linux avec les autorisations de rôle attribuées, par exemple Utilisateur de machine virtuelle ou Administrateur de machine virtuelle. Si le rôle Connexion de l’administrateur aux machines virtuelles est attribué à votre compte d’utilisateur, vous pouvez utiliser sudo pour exécuter les commandes qui nécessitent des privilèges racine.

Se connecter à l’aide d’Azure Cloud Shell

Vous pouvez utiliser Azure Cloud Shell pour vous connecter aux machines virtuelles sans avoir à installer quoi que ce soit localement sur votre ordinateur client. Démarrez Cloud Shell en sélectionnant l’icône de l’interpréteur de commandes dans le coin supérieur droit du portail Azure.

Cloud Shell se connecte automatiquement à une session dans le contexte de l’utilisateur connecté. À présent, réexécutez az login et passez par le flux de connexion interactif :

az login

Vous pouvez ensuite utiliser les commandes az ssh vm normales pour vous connecter en utilisant le nom et le groupe de ressources ou l’adresse IP de la machine virtuelle :

az ssh vm -n myVM -g AzureADLinuxVM

Remarque

La mise en œuvre de la stratégie d’accès conditionnel qui nécessite la conformité de l’appareil ou la jointure Microsoft Entra hybride n’est pas prise en charge lorsque vous utilisez Azure Cloud Shell.

Se connecter en utilisant le principal de service Microsoft Entra pour établir une connexion SSH sur la machine virtuelle Linux

Azure CLI prend en charge l’authentification avec un principal de service à la place d’un compte d’utilisateur. Comme les principaux de service ne sont liés à aucun utilisateur particulier, les clients peuvent les utiliser pour établir une connexion SSH sur une machine virtuelle afin de prendre en charge tous les scénarios d’automatisation qu’ils peuvent avoir. Des droits Administrateur de la machine virtuelle ou Utilisateur de la machine virtuelle doivent être attribués au principal de service. Attribuez des autorisations au niveau de l’abonnement ou du groupe de ressources.

L’exemple suivant attribue des droits Administrateur de la machine virtuelle au principal de service au niveau du groupe de ressources. Remplacez les espaces réservés d’ID d’objet, d’ID d’abonnement et de nom de groupe de ressources du principal de service.

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>"

Utilisez l’exemple suivant pour vous authentifier auprès d’Azure CLI à l’aide du principal de service. Pour plus d’informations, consultez l’article Se connecter à Azure CLI avec un principal de service.

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

Une fois l’authentification avec un principal de service terminée, utilisez les commandes SSH Azure CLI normales pour vous connecter à la machine virtuelle :

az ssh vm -n myVM -g AzureADLinuxVM

Exporter la configuration SSH pour l’utiliser avec des clients SSH prenant en charge OpenSSH

La connexion aux machines virtuelles Linux Azure avec Microsoft Entra ID prend en charge l’exportation du certificat et de la configuration OpenSSH. Cela signifie que vous pouvez utiliser n’importe quel client SSH prenant en charge les certificats basés sur OpenSSH pour vous connecter via Microsoft Entra ID. L’exemple suivant exporte la configuration pour toutes les adresses IP attribuées à la machine virtuelle :

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

Vous pouvez également exporter la configuration en spécifiant uniquement l’adresse IP. Remplacez l’adresse IP dans l’exemple suivant par l’adresse IP publique ou privée de votre machine virtuelle. (Vous devez apporter votre propre connectivité pour les adresses IP privées.) Saisissez az ssh config -h pour obtenir de l’aide sur cette commande.

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

Vous pouvez ensuite vous connecter à la machine virtuelle en utilisant normalement OpenSSH. La connexion peut être établie par le biais de n’importe quel client SSH qui utilise OpenSSH.

Exécuter sudo avec une connexion Microsoft Entra

Une fois que les utilisateurs auxquels le rôle Administrateur de machine virtuelle est attribué ont établi une connexion SSH sur une machine virtuelle Linux, ils peuvent exécuter sudo sans aucune autre exigence d’interaction ou d’authentification. Les utilisateurs auxquels le rôle Utilisateur de machine virtuelle est attribué ne peuvent pas exécuter sudo.

Se connecter aux machines virtuelles dans des groupes de machines virtuelles identiques

Les groupes de machines virtuelles identiques sont pris en charge, mais les procédures d’activation et de connexion aux machines virtuelles sont légèrement différentes dans un groupe de machines virtuelles identiques :

  1. Créez un groupe de machines virtuelles identiques ou choisissez-en un qui existe déjà. Activez une identité managée affectée par le système pour votre groupe de machines virtuelles identiques :

    az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
    
  2. Installez l’extension Microsoft Entra sur votre groupe de machines virtuelles identiques :

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

En règle générale, les groupes de machines virtuelles identiques n’ont pas d’adresses IP publiques. Vous devez être connecté à ceux-ci à partir d’un autre ordinateur qui peut atteindre son réseau virtuel Azure. Cet exemple montre comment utiliser l’adresse IP privée d’une machine virtuelle dans un groupe de machines virtuelles identiques pour se connecter à partir d’une machine du même réseau virtuel :

az ssh vm --ip 10.11.123.456

Remarque

Vous ne pouvez pas déterminer automatiquement les adresses IP des machines virtuelles du groupe de machines virtuelles identiques à l’aide des commutateurs --resource-group et --name.

Migrer à partir de la version précédente (préversion)

Si vous utilisez la version précédente de la connexion Microsoft Entra pour Linux basée sur le flux de code d’appareil, effectuez les étapes suivantes en utilisant l’interface Azure CLI :

  1. Désinstallez l’extension AADLoginForLinux sur la machine virtuelle :

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

    Remarque

    La désinstallation de cette extension peut échouer si des utilisateurs Microsoft Entra sont actuellement connectés à la machine virtuelle. Assurez-vous d’abord que tous les utilisateurs sont déconnectés.

  2. Activez l’identité managée affectée par le système sur votre machine virtuelle :

    az vm identity assign -g myResourceGroup -n myVm
    
  3. Installez l’extension AADSSHLoginForLinux sur la machine virtuelle :

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

Utiliser Azure Policy pour satisfaire aux normes et évaluer la conformité

Utilisez Azure Policy pour :

  • Veillez à ce que la connexion Microsoft Entra soit activée pour vos machines virtuelles Linux nouvelles et existantes.
  • Évaluez la conformité de votre environnement à grande échelle sur un tableau de bord de conformité.

Cette fonctionnalité vous permet d’utiliser de nombreux niveaux de mise en application. Vous pouvez signaler les machines virtuelles Linux nouvelles et existantes dans votre environnement pour lesquelles la connexion Microsoft Entra n’est pas activée. Vous pouvez également utiliser Azure Policy pour déployer l’extension Microsoft Entra sur de nouvelles machines virtuelles Linux pour lesquelles la connexion Microsoft Entra n’est pas activée, ainsi que pour corriger les machines virtuelles Linux existantes afin qu’elles respectent la même norme.

Outre ces fonctionnalités, vous pouvez utiliser Azure Policy pour détecter et signaler les machines virtuelles Linux sur lesquelles des comptes locaux non approuvés ont été créés. Pour en savoir plus, consultez Azure Policy.

Résoudre des problèmes de connexion

Utilisez les sections suivantes pour corriger les erreurs courantes qui peuvent se produire lorsque vous essayez d’établir une connexion SSH avec des identifiants Microsoft Entra.

Impossible de récupérer le jeton dans le cache local

Si vous recevez un message indiquant que le jeton n’a pas pu être récupéré à partir du cache local, vous devez réexécuter az login et passer par un flux de connexion interactif. Passez en revue la section relative à la connexion à l’aide d’Azure Cloud Shell.

Accès refusé : rôle Azure non attribué

Si vous voyez une erreur « Rôle Azure non attribué » sur l’invite SSH, vérifiez que vous avez configuré des stratégies RBAC Azure pour la machine virtuelle qui accordent à l’utilisateur le rôle Connexion d’administrateur de machine virtuelle ou Connexion d’utilisateur de machine virtuelle. Si vous rencontrez des problèmes avec les attributions de rôles Azure, consultez l’article Résoudre les problèmes liés à RBAC Azure.

Problèmes lors de la suppression de l’ancienne extension (AADLoginForLinux)

Si les scripts de désinstallation échouent, l’extension peut rester bloquée dans un état de transition. Lorsque cela se produit, l’extension peut laisser des packages qu’elle est censée désinstaller pendant sa suppression. Dans ce cas, il est préférable de désinstaller manuellement les anciens packages, puis d’essayer d’exécuter la commande az vm extension delete.

Pour désinstaller les anciens packages :

  1. Connectez-vous en tant qu’utilisateur local avec des privilèges Administrateur.
  2. Vérifiez qu’aucun utilisateur n’est connecté à Microsoft Entra. Appelez la commande who -u pour savoir qui est connecté. Ensuite, appelez sudo kill <pid> pour tous les processus de session signalés par la commande précédente.
  3. Exécutez sudo apt remove --purge aadlogin (Ubuntu/Debian), sudo yum remove aadlogin (RHEL) ou sudo zypper remove aadlogin (openSUSE ou SLES).
  4. Si la commande échoue, essayez d’utiliser les outils de bas niveau avec les scripts désactivés :
    1. Pour Ubuntu/Debian, exécutez sudo dpkg --purge aadlogin. Si la commande échoue encore en raison du script, supprimez le fichier /var/lib/dpkg/info/aadlogin.prerm, puis réessayez.
    2. Pour tout le reste, exécutez rpm -e --noscripts aadogin.
  5. Répétez les étapes 3 à 4 pour le package aadlogin-selinux.

Erreurs d’installation de l’extension

L’installation de l’extension de machine virtuelle AADSSHLoginForLinux sur les ordinateurs existants peut échouer et générer l’un des codes d’erreur connus suivants.

Code de sortie non nul 22

Si vous obtenez le code de sortie 22, l’état de l’extension de machine virtuelle AADSSHLoginForLinux apparaît comme En cours de transition dans le portail.

Cet échec se produit car une identité managée affectée par le système est requise.

La solution consiste à :

  1. Désinstallez l’extension qui a échoué.
  2. Activez une identité managée affectée par le système sur la machine virtuelle Azure.
  3. Réexécuter la commande d’installation de l’extension.

Code de sortie non nul 23

Si vous obtenez le code de sortie 23, l’état de l’extension de machine virtuelle AADSSHLoginForLinux apparaît comme En cours de transition dans le portail.

Cet échec se produit quand l’ancienne extension de machine virtuelle AADLoginForLinux est encore installée.

La solution consiste à désinstaller l’ancienne extension de machine virtuelle AADLoginForLinux de la machine virtuelle. L’état de la nouvelle extension de machine virtuelle AADSSHLoginForLinux passera à Approvisionnement réussi dans le portail.

Échecs d’installation lors de l’utilisation d’un proxy HTTP

L’extension a besoin d’une connexion HTTP pour installer des packages, et vérifier l’existence d’une identité système. Elle s’exécute dans le contexte de l’agent walinuxagent.service et nécessite une modification pour informer l’agent des paramètres du proxy. Ouvrez le fichier /lib/systemd/system/walinuxagent.service sur l’ordinateur cible et ajoutez la ligne suivante après [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"

Redémarrez l’agent (sudo systemctl restart walinuxagent). Maintenant, réessayez.

Échec de la commande az ssh vm avec KeyError access_token

Si la commande az ssh vm échoue, vous utilisez une version obsolète du client Azure CLI.

La solution consiste à changer de niveau le client Azure CLI vers la version 2.21.0 ou ultérieure.

La connexion SSH est fermée

Une fois qu’un utilisateur s’est connecté correctement à l’aide de az login, la connexion à la machine virtuelle via az ssh vm -ip <address> ou az ssh vm --name <vm_name> -g <resource_group> peut échouer avec « Connexion fermée par <ip_address> port 22 ».

L’une des causes possibles de cette erreur est que l’utilisateur n’est pas attribué au rôle Connexion d’administrateur de machine virtuelle ou Connexion d’utilisateur de machine virtuelle dans l’étendue de cette machine virtuelle. Dans ce cas, la solution consiste à ajouter l’utilisateur à l’un de ces rôles RBAC Azure dans l’étendue de cette machine virtuelle.

Cette erreur peut également se produire si l’utilisateur est affecté à un rôle RBAC Azure obligatoire, mais que l’identité managée affectée par le système a été désactivée sur la machine virtuelle. Dans ce cas, effectuez ces actions :

  1. Activez l’identité managée affectée par le système sur la machine virtuelle.
  2. Patientez plusieurs minutes que l’utilisateur tente de se connecter en utilisant az ssh vm --ip <ip_address>.

Problèmes de connexion avec les groupes de machines virtuelles identiques

Les connexions des machines virtuelles aux groupes de machines virtuelles identiques peuvent échouer si les instances de groupe de machines virtuelles identiques exécutent un ancien modèle.

La mise à niveau des instances de groupe de machines virtuelles identiques vers le modèle le plus récent peut résoudre le problème, en particulier si aucune mise à niveau n’a été effectuée depuis l’installation de l’extension de connexion Microsoft Entra. La mise à niveau d’une instance applique une configuration standard de groupe de machines virtuelles identiques à l’instance individuelle.

Les instructions AllowGroups et DenyGroups dans sshd_config entraînent l’échec de la première connexion pour les utilisateurs Microsoft Entra

Si sshd_config contient des instructions AllowGroups ou DenyGroups, la première connexion échoue pour les utilisateurs Microsoft Entra. Si l’instruction a été ajoutée après que les utilisateurs se sont déjà connectés, ils peuvent se connecter.

Une solution consiste à supprimer les instructions AllowGroups et DenyGroups de sshd_config.

Une autre solution consiste à déplacer AllowGroups et DenyGroups vers une section match user dans sshd_config. Vérifiez que le modèle de correspondance exclut les utilisateurs Microsoft Entra.

Obtention de l’autorisation refusée lors de la tentative de connexion d’Azure Shell à une machine virtuelle Linux Red Hat/Oracle 7.X.

La version du serveur OpenSSH dans la machine virtuelle cible 7.4 est trop ancienne. Version incompatible avec la version OpenSSH 8.8 du client. Pour plus d’informations, reportez-vous aux certificats RSA SHA256 qui ne fonctionnent plus.

Solution de contournement :

  • Ajout d’une option "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" dans la commande az ssh vm .
az ssh vm -n myVM -g MyResourceGroup -- -A -o "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
  • Ajout de l’option "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" dans /home/<user>/.ssh/config file.

Ajoutez le "PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com" dans le fichier de configuration du client.

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

Étapes suivantes