Résoudre les problèmes de connexion SSH dans une machine virtuelle Azure Linux dus à des problèmes d’autorisation et de propriété
S’applique à : ✔️ Machines virtuelles Linux
Note
CentOS référencé dans cet article est une distribution Linux et atteint la fin de vie (EOL). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils sur la fin de vie centOS.
Cet article fournit des solutions à un problème dans lequel la connexion à une machine virtuelle Linux via Secure Shell (SSH) échoue, car le répertoire /var/empty/sshd dans RHEL, le répertoire /var/lib/empty dans SUSE, ou le répertoire /var/run/sshd dans Ubuntu, n’existe pas, ou il n’appartient pas à l’utilisateur racine, ou il est accessible en écriture de groupe ou accessible en écriture mondiale.
Symptômes
Lorsque vous vous connectez à une machine virtuelle Linux via SSH, la connexion échoue. Vous pouvez recevoir le message d’erreur suivant sur le répertoire concerné, en fonction de votre distribution Linux.
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
Cause
Ce problème peut se produire si le répertoire affecté n’est pas détenu par l’utilisateur racine, ou s’il est accessible en écriture de groupe ou accessible en écriture mondiale.
Pour résoudre ce problème, utilisez l’une des solutions suivantes :
- Résolution 1 : Réparer la machine virtuelle en ligne.
- Résolution 2 : Réparer la machine virtuelle hors connexion.
Résolution 1 : Réparer la machine virtuelle en ligne
Voici deux méthodes pour réparer la machine virtuelle hors connexion :
Utiliser la console série
Connectez-vous à la console série de la machine virtuelle à partir de Portail Azure.
Connectez-vous à la machine virtuelle à l’aide d’un compte d’administration local et de ses informations d’identification ou mot de passe correspondants.
Exécutez les commandes suivantes pour résoudre le problème d’autorisation et de propriété :
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
Utiliser l’extension « Exécuter la commande »
Note
Cette méthode s’appuie sur l’agent de machine virtuelle Linux Azure (waagent). Par conséquent, assurez-vous que l’agent est installé dans la machine virtuelle et que son service est en cours d’exécution.
Dans le Portail Azure, ouvrez la fenêtre Propriétés de la machine virtuelle pour vérifier l’état de l’agent. Si l’agent est activé et dispose de l’état Prêt , procédez comme suit pour modifier l’autorisation :
Accédez au Portail Azure, recherchez les paramètres de votre machine virtuelle, puis sélectionnez Exécuter la commande sous Opérations.
Exécutez le script shell suivant en sélectionnant RunShellScript>Run :
#!/bin/bash #Script to change permissions on a file mkdir -p /var/empty/sshd;chmod 755 /var/empty/sshd;chown root:root /var/empty/sshd
- Une fois l’exécution du script terminée, la fenêtre de la console de sortie affiche un message « Activer réussi ».
Si vous pouvez vous connecter à la machine virtuelle via SSH et que vous souhaitez analyser les détails de l’exécution du script d’exécution de commande, examinez le fichier handler.log dans le répertoire /var/log/azure/run-command .
Résolution 2 : Réparer la machine virtuelle hors connexion
Note
- Utilisez cette résolution si l’accès à la console série de la machine virtuelle n’est pas disponible et que le waagent n’est pas prêt.
- Dans Ubuntu, le répertoire /var/run/sshd s’exécute en mémoire. Le redémarrage de la machine virtuelle résout également le problème. Par conséquent, la résolution des problèmes hors connexion dans les machines virtuelles Ubuntu n’est pas nécessaire.
Voici deux méthodes pour réparer la machine virtuelle hors connexion :
Utiliser azure Linux Auto Repair (ALAR)
Les scripts ALAR (Azure Linux Auto Repair) font partie de l’extension de réparation de machine virtuelle décrite dans Réparer une machine virtuelle Linux à l’aide des commandes de réparation de machine virtuelle Azure.
Procédez comme suit pour automatiser le processus hors connexion manuel :
Note
Dans les étapes suivantes, remplacez $RGNAME
, , $VMNAME
$USERNAME
, , $PASSWORD
et repairdiskcopy
les valeurs en conséquence.
Utilisez la commande az vm repair create pour créer une machine virtuelle de réparation. La machine virtuelle de réparation a une copie du disque du système d’exploitation pour la machine virtuelle problématique attachée.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
Connectez-vous à la machine virtuelle de réparation. Montez et chroot sur le système de fichiers de la copie jointe du disque du système d’exploitation. Suivez les instructions détaillées de chroot.
Exécutez les commandes suivantes pour résoudre les problèmes d’autorisation et de propriété :
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
Une fois les modifications appliquées, exécutez la commande suivante
az vm repair restore
pour effectuer un échange automatique de disque de système d’exploitation avec la machine virtuelle d’origine.az vm repair restore --verbose -g $RGNAME -n $VMNAME
Utiliser la méthode manuelle
Si la console série et l’approche ALAR ne s’appliquent pas à vous ou échouent, la réparation doit être effectuée manuellement. Suivez les étapes ci-dessous pour attacher manuellement le disque du système d’exploitation à une machine virtuelle de récupération et échanger le disque du système d’exploitation vers la machine virtuelle d’origine :
- Attachez le disque du système d’exploitation à une machine virtuelle de récupération à l’aide de la Portail Azure.
- Attachez le disque du système d’exploitation à une machine virtuelle de récupération à l’aide d’Azure CLI.
Une fois que le disque du système d’exploitation est correctement attaché à la machine virtuelle de récupération, suivez les instructions détaillées de chroot pour monter et chroot sur les systèmes de fichiers du disque de système d’exploitation attaché. Ensuite, suivez l’étape 3 dans la section Utiliser la réparation automatique Linux Azure (ALAR) pour résoudre les problèmes d’autorisation et de propriété.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.