Extension VMAccess pour Linux
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.
Remarque
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. Pour restaurer la configuration SSH d’origine sauvegardée, exécutez VMAccess avecrestore_backup_ssh
défini surTrue
.
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.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "<name>",
"apiVersion": "2023-09-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.OSTCExtensions",
"type": "VMAccessForLinux",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"check_disk": true,
"repair_disk": false,
"disk_name": "<disk-name>",
},
"protectedSettings": {
"username": "<username>",
"password": "<password>",
"ssh_key": "<ssh-key>",
"reset_ssh": false,
"remove_user": "<username>",
"expiration": "<expiration>",
"remove_prior_keys": false,
"restore_backup_ssh": true
}
}
}
Valeurs de propriétés
Nom | Valeur/Exemple | Type de données |
---|---|---|
apiVersion | 2023-09-01 | date |
publisher | Microsoft.OSTCExtensions | string |
type | VMAccessForLinux | string |
typeHandlerVersion | 1.5 | int |
Valeurs de la propriété Settings
Nom | Type de données | Description |
---|---|---|
check_disk | boolean | 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
Utilisation des commandes Azure CLI vm user
Les commandes CLI suivantes sous az vm user utilisent l’extension VMAccess. Pour utiliser ces commandes, vous devez installer la dernière version d’Azure CLI et vous connecter à un compte Azure en utilisant az login.
Mettre à jour la clé SSH
L’exemple suivant met à jour la clé SSH pour l’utilisateur azureUser
sur la machine virtuelle myVM
:
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
:
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
:
az vm user reset-ssh \
--resource-group myResourceGroup \
--name myVM
Remarque
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.
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
:
az vm user delete \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser
Utilisation des commandes Azure CLI vm/vmss extension
Vous pouvez également utiliser les commandes az vm extension set et az vmss extension set pour exécuter l’extension VMAccess avec la configuration spécifiée.
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.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 :
{
"username":"azureuser",
"ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}
Exécutez l’extension VMAccess via la commande suivante :
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.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 :
$username = "<username>"
$sshKey = "<cert-contents>"
$settings = @{"check_disk" = $true};
$protectedSettings = @{"username" = $username; "ssh_key" = $sshKey};
Set-AzVMExtension -ResourceGroupName "<resource-group>" `
-VMName "<vm-name>" `
-Location "<location>" `
-Publisher "Microsoft.OSTCExtensions" `
-ExtensionType "VMAccessForLinux" `
-Name "VMAccessForLinux" `
-TypeHandlerVersion "1.5" `
-Settings $settings `
-ProtectedSettings $protectedSettings
Vous pouvez également fournir et modifier des paramètres d’extension en utilisant des chaînes :
$username = "<username>"
$sshKey = "<cert-contents>"
$settingsString = '{"check_disk":true}';
$protectedSettingsString = '{"username":"' + $username + '","ssh_key":"' + $sshKey + '"}';
Set-AzVMExtension -ResourceGroupName "<resource-group>" `
-VMName "<vm-name>" `
-Location "<location>" `
-Publisher "Microsoft.OSTCExtensions" `
-ExtensionType "VMAccessForLinux" `
-Name "VMAccessForLinux" `
-TypeHandlerVersion "1.5" `
-SettingString $settingsString `
-ProtectedSettingString $protectedSettingsString
Pour déployer sur un groupe de machines virtuelles identiques, exécutez la commande suivante :
$resourceGroupName = "<resource-group>"
$vmssName = "<vmss-name>"
$protectedSettings = @{
"username" = "azureUser"
"password" = "userPassword"
}
$publicSettings = @{
"repair_disk" = $true
"disk_name" = "<disk_name>"
}
$vmss = Get-AzVmss `
-ResourceGroupName $resourceGroupName `
-VMScaleSetName $vmssName
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
-Name "<extension-name>" `
-Publisher "Microsoft.OSTCExtensions" `
-Type "VMAccessForLinux" `
-TypeHandlerVersion "1.5"" `
-AutoUpgradeMinorVersion $true `
-Setting $publicSettings `
-ProtectedSetting $protectedSettings
Update-AzVmss `
-ResourceGroupName $resourceGroupName `
-Name $vmssName `
-VirtualMachineScaleSet $vmss
Dépannage et support technique
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. |
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* | 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 :
az vm extension list --resource-group myResourceGroup --vm-name myVM -o table
Pour obtenir plus d’aide, vous pouvez contacter les experts Azure sur le Support de la communauté Azure. Vous pouvez également signaler un incident au support Azure. Accédez à Support Azure, puis sélectionnez Obtenir de l’aide. Pour plus d’informations sur le support Azure, consultez les plans de support Azure.
Étapes suivantes
Pour voir le code, les versions actuelles et plus de documentation, consultez VMAccess Linux – GitHub.