Dépannage d’une connexion SSH à une machine virtuelle Linux Azure défaillante, qui génère une erreur ou qui est refusée

S’applique à : ✔️ Machines virtuelles Linux

Cet article vous aide à trouver et corriger les problèmes qui se produisent en raison d’erreurs SSH (Secure Shell), d’échecs de connexion SSH ou de refus SSH quand vous essayez de vous connecter à une machine virtuelle Linux. Vous pouvez utiliser le portail Azure, l’interface de ligne de commande Azure ou l’extension d’accès aux machines virtuelles pour Linux pour dépanner et résoudre des problèmes de connexion.

Note

Cet article vous a-t-il été utile ? Votre avis est important à nos yeux. Utilisez le bouton Commentaires sur cette page pour nous faire savoir dans quelle mesure cet article vous a été utile ou comment nous pouvons l’améliorer.

Étapes de dépannage rapide

Après chaque étape de résolution des problèmes, essayez de vous reconnecter à la machine virtuelle.

  1. Réinitialisez la configuration SSH.
  2. Réinitialisez les informations d’identification de l’utilisateur.
  3. Vérifiez que les règles du groupe de sécurité réseau autorisent le trafic SSH et l’attribution de rôles.
    • Vérifiez l’existence d’une règle de groupe de sécurité réseau pour autoriser le trafic SSH (par défaut, le port TCP 22).
    • Vous ne pouvez pas utiliser la redirection / mappage de port sans utiliser un équilibreur de charge Azure.
    • Si vous utilisez Microsoft Entra ID pour gérer les connexions SSH, l’utilisateur doit se voir attribuer le rôle Connexion d’administrateur de machine virtuelle ou Connexion utilisateur de machine virtuelle sur le groupe de ressources qui contient la machine virtuelle et ses ressources associées. Sinon, l’erreur « Autorisation refusée (clé publique) » s’affiche. Pour plus d’informations, consultez l’article Configurer des attributions de rôles pour la machine virtuelle qui utilise la connexion Microsoft Entra.
  4. Vérifiez l’intégrité des ressources de la machine virtuelle.
    • Assurez-vous que la machine virtuelle est intègre.
    • Si vous avez des diagnostics de démarrage activés, vérifiez que la machine virtuelle ne signale pas les erreurs de démarrage dans les journaux d’activité.
  5. Redémarrez la machine virtuelle.
  6. Redéployez la machine virtuelle.

Si vous cherchez des procédures de dépannage plus détaillées et des explications, poursuivez la lecture.

Méthodes disponibles pour résoudre les problèmes de connexion SSH

Vous pouvez réinitialiser les informations d’identification, la configuration SSH ou résoudre le problème de statut du service SSH en utilisant l’une des méthodes suivantes :

  • Portail Azure : utile si vous devez rapidement réinitialiser la configuration SSH ou la clé SSH et que vous n’avez pas installé les outils Azure.
  • Console série de machine virtuelle Azure : la console série de machine virtuelle fonctionne quelle que soit la configuration SSH et fournit une console interactive à votre machine virtuelle. De fait, la console série a été spécialement conçue pour éviter les problèmes de connexion SSH. Vous trouverez plus de détails ci-dessous.
  • Utiliser Run Command via le portail Azure - Vous pouvez exécuter des commandes de base grâce à la fonctionnalité Run Command via le portail Azure. La sortie est renvoyée vers le portail.
  • Azure CLI : Si vous êtes déjà sur la ligne de commande, réinitialisez rapidement la configuration SSH ou les informations d’identification.
  • L’extension VMAccessForLinux Azure : création et réutilisation de fichiers de définition json pour réinitialiser la configuration SSH ou les informations d’identification utilisateur.

Après chaque étape de résolution des problèmes, essayez de nouveau de vous connecter à la machine virtuelle. Si vous ne parvenez toujours pas à vous connecter, essayez l’étape suivante.

Utilisation du portail Azure

Le portail Azure offre un moyen rapide de réinitialiser la configuration SSH ou les informations d’identification utilisateur sans installer d’outils sur votre ordinateur local.

Pour commencer, sélectionnez votre machine virtuelle dans le portail Azure. Faites défiler l’écran jusqu’à la section Support + dépannage, puis sélectionnez Réinitialiser le mot de passe comme dans l’exemple suivant :

Capture d’écran pour réinitialiser la configuration SSH ou les informations d’identification dans le Portail Azure.

Réinitialisation de la configuration SSH

Pour réinitialiser la configuration SSH, sélectionnez Reset configuration only dans la section Mode comme dans la capture d’écran précédente, puis sélectionnez Mettre à jour. Une fois cette opération terminée, essayez de nouveau d’accéder à votre machine Virtuelle.

Réinitialisation des informations d’identification SSH d’un utilisateur

Pour réinitialiser les informations d’identification d’un utilisateur existant, sélectionnez Reset SSH public key ou Reset password dans la section Mode comme dans la capture d’écran précédente. Spécifiez le nom d’utilisateur et une clé SSH ou un nouveau mot de passe, puis sélectionnez Mettre à jour.

Vous pouvez également créer un utilisateur avec des privilèges sudo sur la machine virtuelle à partir de ce menu. Entrez un nouveau nom d’utilisateur et le mot de passe ou la clé SSH associés, puis sélectionnez Mettre à jour.

Vérifier les règles de sécurité

Utilisez la vérification des flux IP pour savoir si une règle d’un groupe de sécurité réseau bloque le trafic depuis ou vers une machine virtuelle. Vous pouvez également vérifier les règles de groupe de sécurité effectives pour vous assurer que la règle « Allow » entrante du groupe de sécurité réseau existe pour le port SSH (par défaut, 22). Pour en savoir plus, voir Utilisation de règles de sécurité effectives pour résoudre des problèmes de flux de trafic de machine virtuelle.

Vérifier le routage

Utilisez la fonctionnalité Tronçon suivant de Network Watcher pour vérifier qu’un itinéraire n’empêche pas le trafic d’être routé à destination ou en provenance d’une machine virtuelle. Vous pouvez également examiner les itinéraires effectifs pour voir tous les itinéraires effectifs pour une interface réseau. Pour plus d’informations, consultez Utilisation d’itinéraires effectifs pour résoudre des problèmes de flux de trafic de machine virtuelle.

Utiliser la console série de machine virtuelle Azure

La console série de machine virtuelle Azure donne accès à une console texte pour les machines virtuelles Linux. Elle vous permet de résoudre les problèmes liés à votre connexion SSH dans un shell interactif. Après avoir vérifiez que vous respectez les prérequis pour l’utilisation de la console série, essayez les commandes ci-dessous pour un dépannage plus poussé de votre connectivité SSH.

Vérifier que le service SSH est opérationnel

Pour vérifier l’état du service, utilisez la commande suivante, qui est disponible dans la plupart des distributions Linux actuelles :

sudo systemctl status sshd.service

Consultez l’exemple de sortie suivant. Vérifiez l’état du service sur la ligne Active dans la sortie. La sortie affiche également le port et les adresses IP en cours d’écoute.

user@hostname:~$ sudo systemctl status sshd.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-06-23 17:44:36 UTC; 1 day 3h ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 829 (sshd)
      Tasks: 1 (limit: 9535)
     Memory: 5.1M
     CGroup: /system.slice/ssh.service
             └─829 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Jun 23 17:44:35 ubu2004 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on 0.0.0.0 port 22.
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on :: port 22.
Jun 23 17:44:36 ubu2004 systemd[1]: Started OpenBSD Secure Shell server.

Si cette commande n’est pas disponible ou renvoie des résultats inattendus, utilisez d’autres commandes disponibles. Vous pouvez utiliser la commande ss en tant que racine ou via la commande sudo pour vérifier si le service SSH est en cours d’exécution sur votre machine virtuelle.

L’exemple suivant montre comment exécuter la commande ss via sudo :

sudo ss --listen --tcp --process --numeric | grep sshd

Note

Il est recommandé d’utiliser la commande ss, car la commande netstat est obsolète et peut être aux abonnés absents dans les distributions modernes.

Si vous obtenez une sortie, c’est que SSH est opérationnel. Consultez l’exemple de sortie suivant :

$ sudo ss -ltpn | grep sshd
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=829,fd=3))
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=829,fd=4))

-ltpn est la forme raccourcie des arguments --listen --tcp --process –numeric. La sortie montre que le processus SSHD 829 écoute sur les adresses IPv4 et IPv6.

Vérifier le port sur lequel SSH s’exécute

La sortie de la commande ci-dessus montre que le processus SSHD écoute sur le port 22. Lorsque le processus SSHD est configuré pour s’exécuter sur un autre port, ce dernier est affiché dans la sortie. Pour vérifier si la modification a été effectuée dans le fichier de configuration standard, examinez le fichier de configuration par défaut, /etc/ssh/sshd_config à l’aide de l’une des commandes suivantes :

grep -i port /etc/ssh/sshd_config

ou

grep -i listen /etc/ssh/sshd_config

La sortie se présente comme suit :

Port 22

Toute ligne qui commence par # dans la sortie est un commentaire et peut être ignorée sans risque. Si rien n’est renvoyé ou si les lignes sont des commentaires, la configuration par défaut est utilisée. La configuration par défaut consiste à écouter toutes les adresses IP du système, sur le port 22.

Utiliser la fonctionnalité Run Command via le portail Azure

Si vous n’êtes pas en mesure d’exécuter des commandes via la Serial console, par exemple lorsque seules les clés SSH sont utilisées pour l’authentification, la fonctionnalité Run Command peut être utilisée pour émettre des commandes et afficher la sortie. Toutes les commandes précédemment exécutées à partir de la Serial console peuvent être exécutées de manière non interactive dans la section Run Command du portail Azure. La sortie sera renvoyée au portail Azure. Il n’est pas nécessaire d’utiliser sudo pour exécuter des commandes dans le contexte de la fonctionnalité Run Command.

Utilisation de l’interface de ligne de commande Microsoft Azure

Si ce n’est pas déjà fait, installez la dernière version d’Azure CLI et connectez-vous à un compte Azure avec az login.

Si vous avez créé et téléchargé une image de disque Linux personnalisée, assurez-vous que le Microsoft Azure Linux Agent version 2.0.5 ou ultérieure est installé. Pour les machines virtuelles créées à l’aide d’images de la galerie, cette extension de l’accès est déjà installée et configurée.

Réinitialisation de la configuration SSH

Vous pouvez initialement essayer de réinitialiser la configuration SSH aux valeurs par défaut et de redémarrer le serveur SSH sur la machine virtuelle. Cela ne change pas le nom du compte d’utilisateur, le mot de passe, ni les clés SSH. L’exemple suivant utilise az vm user reset-ssh pour réinitialiser la configuration SSH sur la machine virtuelle nommée myVM dans myResourceGroup. Utilisez vos propres valeurs comme suit :

az vm user reset-ssh --resource-group myResourceGroup --name myVM

Réinitialisation des informations d’identification SSH d’un utilisateur

L’exemple suivant utilise az vm user update pour réinitialiser les informations d’identification pour myUsername à la valeur spécifiée dans myPassword, sur la machine virtuelle myVM dans myResourceGroup. Utilisez vos propres valeurs comme suit :

az vm user update --resource-group myResourceGroup --name myVM \
     --username myUsername --password myPassword

Si vous utilisez l’authentification par clé SSH, vous pouvez réinitialiser la clé SSH pour un utilisateur donné. L’exemple suivant utilise az vm access set-linux-user pour mettre à jour la clé SSH stockée dans ~/.ssh/id_rsa.pub pour l’utilisateur myUsername, sur la machine virtuelle myVM dans myResourceGroup. Utilisez vos propres valeurs comme suit :

az vm user update --resource-group myResourceGroup --name myVM \
    --username myUsername --ssh-key-value ~/.ssh/id_rsa.pub

Utilisation de l’extension VMAccess

Lʼextension VM Access pour Linux lit un fichier json qui définit les actions à effectuer. Ces actions incluent la réinitialisation du SSHD, la réinitialisation dʼune clé SSH ou lʼajout dʼun utilisateur. Vous utilisez toujours l’interface de ligne de commande Azure pour appeler l’extension VMAccess, mais vous pouvez réutiliser les fichiers json sur plusieurs machines virtuelles si vous le souhaitez. Cette approche vous permet de créer un référentiel de fichiers json que vous pouvez ensuite appeler en fonction des scénarios.

Réinitialiser SSHD

Créez un fichier nommé settings.json avec le contenu suivant :

{
    "reset_ssh":True
}

À l’aide de l’interface de ligne de commande Azure, appelez ensuite l’extension VMAccessForLinux pour réinitialiser votre connexion SSHD en spécifiant votre fichier json. L’exemple suivant utilise az vm extension set pour réinitialiser SSHD sur la machine virtuelle nommée myVM dans myResourceGroup. Utilisez vos propres valeurs comme suit :

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Réinitialisation des informations d’identification SSH d’un utilisateur

Si SSHD semble fonctionner correctement, vous pouvez réinitialiser les informations d’identification d’un utilisateur donné. Pour réinitialiser le mot de passe pour un utilisateur, créez un fichier nommé settings.json. L’exemple suivant réinitialise les informations d’identification pour myUsername sur la valeur spécifiée dans myPassword. Entrez les lignes suivantes dans votre fichier settings.json en utilisant vos propres valeurs :

{
    "username":"myUsername", "password":"myPassword"
}

Pour réinitialiser la clé SSH pour un utilisateur, créez tout d’abord un fichier nommé settings.json. L’exemple suivant réinitialise les informations d’identification pour myUsername sur la valeur spécifiée dans myPassword sur la machine virtuelle nommée myVM dans myResourceGroup. Entrez les lignes suivantes dans votre fichier settings.json en utilisant vos propres valeurs :

{
    "username":"myUsername", "ssh_key":"mySSHKey"
}

Après avoir créé votre fichier json, utilisez l’interface de ligne de commande Azure pour appeler l’extension VMAccessForLinux pour réinitialiser vos informations d’identification d’utilisateur SSH en spécifiant votre fichier json. L’exemple suivant réinitialise les informations d’identification sur la machine virtuelle nommée myVM dans myResourceGroup. Utilisez vos propres valeurs comme suit :

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Réinitialisation de la configuration SSH

Il est possible que la configuration SSHD soit mal configurée ou que le service ait rencontré une erreur. Vous pouvez réinitialiser SSHD pour vous assurer que la configuration SSH elle-même est valide. La réinitialisation du SSHD doit être la première étape de dépannage que vous effectuez.

L’exemple suivant redémarre le SSHD nommé myVM dans le groupe de ressources nommé myResourceGroup. Utilisez vos propres noms de machine virtuelle et de groupe de ressources comme suit :

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --reset-ssh

Réinitialisation des informations d’identification SSH d’un utilisateur

Si SSHD semble fonctionner correctement, vous pouvez réinitialiser le mot de passe d’un utilisateur donné. L’exemple suivant réinitialise les informations d’identification pour myUsername sur la valeur spécifiée dans myPassword sur la machine virtuelle nommée myVM dans myResourceGroup. Utilisez vos propres valeurs comme suit :

azure vm reset-access --resource-group myResourceGroup --name myVM \
     --user-name myUsername --password myPassword

Si vous utilisez l’authentification par clé SSH, vous pouvez réinitialiser la clé SSH pour un utilisateur donné. L’exemple suivant met à jour la clé SSH stockée dans ~/.ssh/id_rsa.pub pour l’utilisateur nommé myUsername sur la machine virtuelle nommée myVM dans myResourceGroup. Utilisez vos propres valeurs comme suit :

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --user-name myUsername --ssh-key-file ~/.ssh/id_rsa.pub

Redémarrer une machine virtuelle

Si vous avez réinitialisé la configuration SSH et les informations d’identification utilisateur, ou si une erreur a été générée lors de cette opération, vous pouvez essayer de redémarrer la machine virtuelle à l’adresse liée aux problèmes de calcul.

Portail Azure

Pour redémarrer une machine virtuelle à l’aide du portail Azure, sélectionnez votre machine virtuelle, puis sélectionnez Redémarrer comme dans l’exemple suivant :

Capture d’écran montrant le redémarrage d’une machine virtuelle dans le portail Azure.

Azure CLI

L’exemple suivant utilise az vm restart pour redémarrer la machine virtuelle nommée myVM dans le groupe de ressources nommé myResourceGroup. Utilisez vos propres valeurs comme suit :

az vm restart --resource-group myResourceGroup --name myVM

Redéploiement d’une machine virtuelle

Vous pouvez redéployer une machine virtuelle vers un autre nœud dans Azure, ce qui peut permettre de résoudre les problèmes de mise en réseau sous-jacents. Pour en savoir plus sur le redéploiement d’une machine virtuelle, consultez Redéployer une machine virtuelle vers un nouveau nœud Azure.

Note

Une fois cette opération terminée, les données de disque éphémères sont perdues et les adresses IP dynamiques associées à la machine virtuelle sont mises à jour.

Portail Azure

Pour redéployer une machine virtuelle à l’aide du portail Azure, sélectionnez votre machine virtuelle et faites défiler la page vers le bas jusqu’à la section Support + dépannage. Sélectionnez Redéployer comme dans l’exemple suivant :

Capture d’écran montrant le redéploiement d’une machine virtuelle dans le portail Azure.

Azure CLI

L’exemple suivant utilise az vm redeploy pour redéployer la machine virtuelle nommée myVM dans le groupe de ressources nommé myResourceGroup. Utilisez vos propres valeurs comme suit :

az vm redeploy --resource-group myResourceGroup --name myVM

Ressources supplémentaires

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.