Partager via


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 Azure ou des serveurs Linux avec Azure Arc, vous pouvez intégrer l’authentification Microsoft Entra. Vous pouvez désormais utiliser Microsoft Entra ID comme plateforme d’authentification principale et autorité de certification 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’informations d’identification et des informations d’identification 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 :

Répartition Version
AlmaLinux AlmaLinux 8, AlmaLinux 9
Azure Linux (anciennement appelé Mariner Linux de base commune) CBL-Mariner 2.0, Azure Linux 3.0
Debian Debian 9, Debian 10, Debian 11, Debian 12
OpenSUSE openSUSE Leap 42.3, openSUSE Leap 15.1 à 15.5, openSUSE Leap 15.6+
Oracle Oracle Linux 8, Oracle Linux 9
Red Hat Enterprise Linux (RHEL) RHEL 7.4 à RHEL 7.9, RHEL 8.3+, RHEL 9.0+
Rocheux Rocky 8, Rocky 9
SLES (SUSE Linux Enterprise Server) SLES 12, SLES 15.1 à 15.5, SLES 15.6+
Ubuntu Ubuntu 16.04 à Ubuntu 24.04

Remarque

SUSE a apporté un changement cassant avec la version 15.6 qui n’est pas compatible avec les versions antérieures. Étant donné que l’extension de machine virtuelle de connexion Microsoft Entra installe toujours le dernier package, cela ne fonctionnera pas sur les anciennes versions de SUSE. Vous pouvez installer les packages aadsshlogin à partir de packages.microsoft.com pour les versions antérieures de SUSE. Après avoir ajouté le dépôt, vous pouvez les installer manuellement avec cette commande : sudo zypper install aadsshlogin=1.0.027980001.

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

  • Azure Global
  • Azure Government
  • Microsoft Azure géré 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 avez besoin d’installer ou de mettre à 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 du service de métadonnées d'instance Azure.
  • https://login.microsoftonline.com : Pour les flux d’authentification basés sur PAM (Pluggable Authentication Modules).
  • https://pas.windows.net : pour les flux Azure RBAC.

Azure Government :

  • https://packages.microsoft.com : Pour l’installation et les mises à niveau des packages.
  • http://169.254.169.254 : Point de terminaison du service de métadonnées d'instance Azure.
  • https://login.microsoftonline.us : pour les flux d’authentification basés sur PAM.
  • https://pasff.usgovcloudapi.net : pour les flux Azure RBAC.

Microsoft Azure géré par 21Vianet :

  • https://packages.microsoft.com : Pour l’installation et les mises à niveau des packages.
  • http://169.254.169.254 : Point de terminaison du service de métadonnées d'instance Azure.
  • https://login.chinacloudapi.cn : pour les flux d’authentification basés sur PAM.
  • https://pas.chinacloudapi.cn : pour les flux Azure RBAC.

Machine virtuelle

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

  • Identité gérée assigné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 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 privée de la machine virtuelle. (Il est également possible d’utiliser ProxyCommand ou un transfert SSH vers une machine ayant une connectivité.)

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 à l’aide du 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 qui a accès à la création de 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. Sous l’onglet Gestion :
    1. Cochez la case Connexion avec l’ID Microsoft Entra .
    2. Vérifiez que la case à cocher Identité managée affectée par le système est 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. Les outils Azure courants sont préinstallés et configurés dans Cloud Shell pour être utilisés avec votre compte. Sélectionnez simplement le bouton Copier pour copier le code, collez-le dans Cloud Shell, puis sélectionnez la touche 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 avez besoin d’installer ou de mettre à 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 Entra de Microsoft pour la connexion 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.

Activer la connexion Microsoft Entra pour les serveurs Linux avec Azure Arc

Vous trouverez les détails pertinents sur l’accès SSH aux serveurs avec Azure Arc

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 telle que le rôle Administrateur de contrôle d’accès en fonction du rôle. Toutefois, si vous utilisez un rôle différent de celui de l’administrateur d’accès aux données de machine virtuelle, nous vous recommandons d’ajouter une condition pour réduire l’autorisation de créer des attributions de rôles.

  • Connexion 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 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 réguliers.

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 Contributeur 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ôles 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 uneattribution de rôle pour ouvrir la page Ajouter> une attribution de rôle.

  4. Attribuez le rôle suivant. Pour obtenir des instructions détaillées, consultez Affecter des rôles Azure à l’aide du portail Azure.

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

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

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

Azure Cloud Shell

L’exemple suivant utilise az role assignment create pour attribuer le rôle de connexion Administrateur de Machine Virtuelle à la VM pour votre utilisateur Azure actuel. Vous obtenez le nom d’utilisateur de votre compte Azure actuel à l’aide d’az account show et vous définissez l’étendue sur la machine virtuelle créée à l’étape précédente à l’aide d’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 pas seulement le nom d’utilisateur pour --assignee. Vous pouvez obtenir l’ID d’objet de votre compte d’utilisateur à l’aide d’az ad user list.

Pour plus d’informations sur l’utilisation d’Azure RBAC pour gérer l’accès à vos ressources d’abonnement Azure, consultez Étapes 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 appliquer 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 apparaît dans la stratégie d’accès conditionnel est appelée connexion à la VM Linux Azure.

Remarque

L’application 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 locataire :

  1. Connectez-vous au Centre d’administration Microsoft Entra en tant qu’administrateur d’application cloud au moins.
  2. Accédez à Entra ID>Applications d'entreprise.
  3. Supprimez les filtres pour afficher toutes les applications et recherchez la machine virtuelle. Si vous ne voyez pas Connexion à la machine virtuelle Linux Microsoft Azure comme résultat, le principal de service est manquant dans le locataire.

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

Entrez az login. Cette commande ouvre une fenêtre de 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 informations d’identification 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

L’application de la stratégie d’accès conditionnel qui nécessite la conformité de l’appareil ou l'inscription hybride Microsoft Entra 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 du nom de groupe de ressources, d’ID d’abonnement et d’ID d’objet 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.) Entrez 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 ensembles d'échelles de machines virtuelles sont pris en charge, mais les étapes pour activer et se connecter aux machines virtuelles dans un ensemble d'échelles de machines virtuelles sont légèrement différentes :

  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 ensembles de machines virtuelles 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 en utilisant les 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 les 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 informations d’identification 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 Dépanner le contrôle d'accès basé sur les rôles Azure (RBAC).

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 s’affiche en tant que en transition dans le portail.

Cet échec se produit car une identité gérée attribué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 s’affiche comme Transitioning 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 passe ensuite au provisionnement 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 à mettre à 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 affecté 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. Veuillez patienter plusieurs minutes avant que l’utilisateur ne 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 avec les ensembles de machines virtuelles peuvent échouer si les instances de l'ensemble exécutent un ancien modèle.

Il est possible que la mise à niveau des instances de groupe de machines virtuelles identiques vers le modèle le plus récent résolve 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 identique à 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 l’une AllowGroups ou l’autre DenyGroups des instructions, la première connexion échoue pour les utilisateurs de 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 déclarations AllowGroups et DenyGroups du fichier sshd_config.

Une autre solution consiste à déplacer AllowGroups et DenyGroups à une match user section dans sshd_config. Vérifiez que le modèle de correspondance exclut les utilisateurs de 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, consultez les certificats RSA SHA256 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