Migrer vers Innovation Summit:
Découvrez comment la migration et la modernisation vers Azure peuvent améliorer les performances, la résilience et la sécurité de votre entreprise, ce qui vous permet d’adopter entièrement l’IA.S’inscrire maintenant
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
L’extension VMAccess est utilisée pour gérer les utilisateurs administratifs, configurer SSH, et vérifier ou réparer des disques sur des machines virtuelles Linux Azure. L’extension s’intègre aux modèles Azure Resource Manager. Vous pouvez aussi l’appeler en utilisant Azure CLI, Azure PowerShell, le portail Azure et l’API REST Machines virtuelles Azure.
Cet article explique comment exécuter l’extension VMAccess depuis Azure CLI et via un modèle Azure Resource Manager. Il indique également la procédure de résolution des problèmes pour les systèmes Linux.
Notes
Si vous utilisez l’extension VMAccess pour réinitialiser le mot de passe de votre machine virtuelle après avoir installé l’extension de connexion Microsoft Entra, réexécutez l’extension de connexion Microsoft Entra pour réactiver la connexion Microsoft Entra pour votre machine virtuelle.
Prérequis
Distributions de Linux prises en charge
Distribution Linux
x64
ARM64
Alma Linux
9.x +
9.x +
Debian
> 10
11.x+
Flatcar Linux
3374.2.x+
3374.2.x+
Linux Azure
2.x
2.x
OpenSUSE
12.3+
Non pris en charge
Oracle Linux
6.4+, 7.x+, 8.x+
Non pris en charge
Red Hat Enterprise Linux
6.7+, 7.x+, 8.x+
8.6+, 9.0+
Rocky Linux
9.x +
9.x +
SLES
12.x+, 15.x+
15.x SP4+
Ubuntu
18.04+, 20.04+, 22.04+
20.04+, 22.04+
Conseils
VMAccess a été conçu pour récupérer l’accès à une machine virtuelle quand cet accès est perdu. Sur la base de ce principe, il accorde l’autorisation sudo au compte spécifié dans le champ du nom d’utilisateur. Si vous ne souhaitez pas qu’un utilisateur obtienne des autorisations sudo, connectez-vous à la machine virtuelle et utilisez des outils intégrés (par exemple usermod, chage, etc.) pour gérer les utilisateurs non privilégiés.
Une seule version de l’extension peut être appliquée à une machine virtuelle. Pour exécuter une deuxième action, mettez à jour l’extension existante avec une nouvelle configuration.
Lors de la mise à jour d’un utilisateur, VMAccess modifie le fichier sshd_config et en effectue préalablement une sauvegarde. Il transforme ChallengeResponseAuthentication en no et PasswordAuthentication en yes. Pour restaurer la configuration SSH d’origine sauvegardée, exécutez VMAccess avec restore_backup_ssh défini sur True.
Schéma d’extensions
La configuration de l’extension VMAccess inclut des paramètres pour le nom d’utilisateur, les mots de passe, les clés SSH, etc. Vous pouvez stocker ces informations dans des fichiers de configuration, les spécifier dans la ligne de commande ou les inclure dans un modèle Azure Resource Manager (ARM). Le schéma JSON suivant contient toutes les propriétés disponibles pour être utilisées dans les paramètres publics et protégés.
Indique s’il faut ou non vérifier le disque (facultatif). Pour check_disk et repair_disk, une seule des deux peut être définie sur true.
repair_disk
boolean
Indique s’il faut ou non vérifier le disque (facultatif). Vous pouvez définir check_disk ou repair_disk sur true, mais pas les deux.
disk_name
string
Nom du disque à réparer (obligatoire quand repair_disk est défini sur true).
username
string
Nom de l’utilisateur à gérer (obligatoire pour toutes les actions sur un compte d’utilisateur).
mot de passe
string
Mot de passe à définir pour le compte d’utilisateur.
ssh_key
string
Clé publique SSH à ajouter pour le compte d’utilisateur. La clé SSH peut être au format ssh-rsa, ssh-ed25519 ou .pem.
reset_ssh
boolean
Indique s’il faut ou non réinitialiser le protocole SSH. Si true, il remplace le fichier sshd_config par un fichier de ressources internes correspondant à la configuration SSH par défaut pour cette distribution.
remove_user
string
Nom de l’utilisateur à supprimer. Ne peut pas être utilisé avec reset_ssh, restore_backup_ssh et password.
expiration
string
Date d’expiration à définir pour le compte, sous la forme yyyy-mm-dd. Par défaut, le compte n’expire jamais.
remove_prior_keys
boolean
Indique s’il faut ou non supprimer les anciennes clés SSH lors de l’ajout d’une nouvelle clé. Doit être utilisé avec ssh_key.
restore_backup_ssh
boolean
Indique s’il faut ou non restaurer le fichier sshd_config d’origine sauvegardé.
Déploiement de modèle
Les extensions de machine virtuelle Azure peuvent être déployées avec des modèles Azure Resource Manager (ARM). Le schéma JSON détaillé dans la section précédente peut être utilisé dans un modèle ARM pour exécuter l’extension VMAccess pendant le déploiement du modèle. Vous trouverez un exemple de modèle qui inclut l’extension VMAccess sur GitHub.
La configuration JSON d’une extension de machine virtuelle doit être imbriquée dans le fragment de la ressource de machine virtuelle du modèle, plus précisément dans l’objet "resources": [] de la machine virtuelle et, dans le cas d’un groupe de machines virtuelles identiques, sous l’objet "virtualMachineProfile":"extensionProfile":{"extensions" :[].
Déploiement de l’interface de ligne de commande Azure
L’exemple suivant met à jour la clé SSH pour l’utilisateur azureUser sur la machine virtuelle myVM :
Azure CLI
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Notes
La commande az vm user update ajoute le texte de la nouvelle clé publique au fichier ~/.ssh/authorized_keys pour l’utilisateur administrateur sur la machine virtuelle. Cette opération ne remplace pas ou ne supprime pas les clés SSH existantes. Cette commande ne supprime pas les clés préalablement définies au moment du déploiement ou lors des mises à jour suivantes en utilisant l’extension VMAccess.
Réinitialiser le mot de passe
L’exemple suivant réinitialise le mot de passe pour l’utilisateur azureUser sur la machine virtuelle myVM :
Azure CLI
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--password myNewPassword
Redémarrer SSH
L’exemple suivant redémarre le démon SSH et réinitialise la configuration SSH à ses valeurs par défaut sur une machine virtuelle nommée myVM :
Azure CLI
az vm user reset-ssh \
--resource-group myResourceGroup \
--name myVM
Notes
La commande az vm user reset-ssh remplace le fichier sshd_config par un fichier de configuration par défaut provenant du répertoire des ressources internes. Cette commande ne restaure pas la configuration SSH d’origine trouvée sur la machine virtuelle.
Créer un utilisateur administratif/sudo
L’exemple suivant crée un utilisateur nommé myNewUser avec des autorisations sudo. Le compte utilise une clé SSH pour l’authentification sur la machine virtuelle nommée myVM. Cette méthode est conçue pour vous aider à réaccéder à une machine virtuelle en cas de perte ou d’oubli des informations d’identification actuelles. En guise de bonne pratique, vous devez limiter les comptes avec des autorisations sudo.
Azure CLI
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Supprimer un utilisateur
L’exemple suivant supprime un utilisateur nommé myNewUser sur la machine virtuelle myVM :
Azure CLI
az vm user delete \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser
Utilisation des commandes Azure CLI vm/vmss extension
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version1.5 \
--settings'{"check_disk":true}'--protected-settings'{"username":"user1","password":"userPassword"}'
Les paramètres --settings et --protected-settings acceptent également des chemins de fichier JSON. Par exemple, pour mettre à jour la clé publique SSH d’un utilisateur, créez un fichier JSON nommé update_ssh_key.json et ajoutez des paramètres au format suivant. Remplacez les valeurs dans le fichier par vos propres informations :
Exécutez l’extension VMAccess via la commande suivante :
Azure CLI
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version1.5 \
--protected-settings update_ssh_key.json
Déploiement d’Azure PowerShell
Vous pouvez utiliser Azure PowerShell pour déployer l’extension VMAccess sur une machine virtuelle existante ou sur un groupe de machines virtuelles identiques existant. Vous pouvez déployer l’extension sur une machine virtuelle en exécutant :
Les journaux de l’extension VMAccess sont stockés localement sur la machine virtuelle et contiennent des informations utiles pour la résolution des problèmes.
Emplacement
Description
/var/log/waagent.log
Contient les journaux de l’Agent Linux et indique quand une mise à jour de l’extension s’est produite. Nous pouvons le consulter pour vérifier que l’extension a été exécutée.
L’extension VMAccess produit des journaux, qui sont disponibles ici. Le répertoire contient CommandExecution.log, où vous pouvez trouver chaque commande exécutée avec son résultat, ainsi que extension.log, qui contient des journaux individuels pour chaque exécution.
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-<version la plus récente>/config/*
La configuration et les fichiers binaires de l’extension de machine virtuelle VMAccess.
Vous pouvez également récupérer l’état d’exécution de l’extension VMAccess ainsi que d’autres extensions sur une machine virtuelle donnée en exécutant la commande suivante :
Azure CLI
az vm extension list --resource-group myResourceGroup --vm-name myVM -o table