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

Voici deux méthodes pour réparer la machine virtuelle hors connexion :

Utiliser la console série

  1. Connectez-vous à la console série de la machine virtuelle à partir de Portail Azure.

  2. Connectez-vous à la machine virtuelle à l’aide d’un compte d’administration local et de ses informations d’identification ou mot de passe correspondants.

  3. 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 :

  1. Accédez au Portail Azure, recherchez les paramètres de votre machine virtuelle, puis sélectionnez Exécuter la commande sous Opérations.

  2. 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
    

  1. 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, , $PASSWORDet repairdiskcopy les valeurs en conséquence.

  1. 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
    
  2. 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.

  3. 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
    
  4. 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 :

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.