Ce document décrit les erreurs courantes que vous pouvez rencontrer lorsque vous vous connectez à des instances de machines virtuelles (VM) à l'aide de SSH, les solutions pour y remédier et les méthodes de diagnostic des échecs de connexions SSH.
Outil de dépannage SSH
Utilisez l'outil de dépannage SSH pour déterminer la raison de l'échec de la connexion SSH. L'outil de dépannage effectue les tests suivants pour rechercher la cause des échecs de connexion SSH :
- Tests des autorisations des utilisateurs : vérifient si vous disposez des autorisations IAM requises pour vous connecter à la VM à l'aide de SSH.
- Tests de connectivité réseau : vérifient si la VM est connectée au réseau.
- Tests de l'état de l'instance de VM : vérifient l'état du processeur de la VM pour savoir si la VM est en cours d'exécution.
- Tests des paramètres VPC : vérifient le port SSH par défaut.
Exécuter l'outil de dépannage
Vous pouvez utiliser la console Google Cloud ou Google Cloud CLI pour résoudre les échecs de connexion SSH aux VM.
Console
Après une connexion SSH, vous avez la possibilité de relancer la connexion ou de résoudre les problèmes avec l'outil de dépannage SSH dans le navigateur.
Pour exécuter l'outil de dépannage, cliquez sur Résoudre les problèmes.
gcloud
Exécutez l'outil de dépannage à l'aide de la commande gcloud compute ssh
:
gcloud compute ssh VM_NAME \ --troubleshoot
Remplacez VM_NAME
par le nom de la VM à laquelle vous ne parvenez pas à vous connecter.
L'outil vous invite à fournir l'autorisation permettant d'effectuer les tests de dépannage.
Étudier les résultats
Après avoir exécuté l'outil de dépannage, procédez comme suit :
- Examinez les résultats du test pour comprendre pourquoi la connexion SSH de la VM ne fonctionne pas.
- Résolvez les connexions SSH en réalisant les mesures correctives fournies par l'outil.
- Essayez de vous reconnecter à la VM.
Erreurs courantes liées à SSH
Voici des exemples d'erreurs courantes que vous pouvez rencontrer lorsque vous utilisez SSH pour vous connecter à des VM Compute Engine.
Erreurs Linux
Autorisation refusée (clé publique)
L'erreur suivante peut se produire lorsque vous vous connectez à votre VM :
USERNAME@VM_EXTERNAL_IP: Permission denied (publickey).
Cette erreur peut se produire pour plusieurs raisons. Voici quelques-unes des causes les plus courantes de cette erreur :
Vous avez utilisé une clé SSH stockée dans les métadonnées pour vous connecter à une VM sur laquelle OS Login est activé. Si OS Login est activé sur votre projet, votre VM n'accepte pas les clés SSH stockées dans les métadonnées. Si vous ne savez pas si OS Login est activé, consultez la section Vérifier si OS Login est configuré.
Pour résoudre ce problème, essayez l'une des solutions suivantes :
- Connectez-vous à votre VM à l'aide de Google Cloud Console ou de Google Cloud CLI. Pour en savoir plus, consultez la page Se connecter à des VM.
- Ajoutez vos clés SSH à OS Login. Pour en savoir plus, consultez la section Ajouter des clés aux VM qui utilisent OS Login.
- Désactivez OS Login. Pour en savoir plus, consultez la section Désactiver OS Login.
Vous avez utilisé une clé SSH stockée dans un profil OS Login pour vous connecter à une VM sur laquelle OS Login n'est pas activé. Si vous désactivez OS Login, votre VM n'accepte pas les clés SSH stockées dans votre profil OS Login. Si vous ne savez pas si OS Login est activé, consultez la section Vérifier si OS Login est configuré.
Pour résoudre ce problème, essayez l'une des solutions suivantes :
- Connectez-vous à votre VM à l'aide de Google Cloud Console ou de Google Cloud CLI. Pour en savoir plus, consultez la page Se connecter à des VM.
- Activez OS Login. Pour en savoir plus, consultez la section Activer OS Login.
- Ajoutez des clés SSH aux métadonnées. Pour en savoir plus, consultez la section Ajouter des clés SSH aux VM qui utilisent des clés SSH basées sur les métadonnées.
OS Login est activé sur la VM, mais vous ne disposez pas des autorisations IAM suffisantes pour utiliser OS Login. Pour vous connecter à une VM sur laquelle OS Login est activé, vous devez disposer des autorisations requises pour OS Login. Si vous ne savez pas si OS Login est activé, consultez la section Vérifier si OS Login est configuré.
Pour résoudre ce problème, accordez les rôles IAM OS Login requis.
Votre clé a expiré et Compute Engine a supprimé votre fichier
~/.ssh/authorized_keys
. Si vous avez ajouté manuellement des clés SSH à votre VM, puis que vous vous êtes connecté à cette VM à l'aide de Google Cloud Console, Compute Engine a créé une paire de clés pour la connexion. Lorsque la nouvelle paire de clés a expiré, Compute Engine a supprimé le fichier~/.ssh/authorized_keys
de la VM, qui comprenait la clé SSH ajoutée manuellement.Pour résoudre ce problème, essayez l'une des solutions suivantes :
- Connectez-vous à votre VM à l'aide de Google Cloud Console ou de Google Cloud CLI. Pour en savoir plus, consultez la page Se connecter à des VM.
- Ajoutez à nouveau votre clé SSH aux métadonnées. Pour en savoir plus, consultez la section Ajouter des clés SSH aux VM qui utilisent des clés SSH basées sur les métadonnées.
Vous vous êtes connecté à l'aide d'un outil tiers et votre commande SSH est mal configurée. Si vous vous connectez à l'aide de la commande
ssh
, mais que vous ne spécifiez pas de chemin d'accès à la clé privée, ou un chemin incorrect, votre VM refuse la connexion.Pour résoudre ce problème, essayez l'une des solutions suivantes :
- Exécutez la commande suivante :
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
Remplacez les éléments suivants :PATH_TO_PRIVATE_KEY
: chemin d'accès au fichier de clé SSH privée.USERNAME
: nom de l'utilisateur qui se connecte à l'instance. Si vous gérez vos clés SSH dans les métadonnées, le nom d'utilisateur est celui que vous avez spécifié lorsque vous avez créé la clé SSH. Pour les comptes OS Login, le nom d'utilisateur est défini dans votre profil Google.EXTERNAL_IP
: adresse IP externe de votre VM.
- Connectez-vous à votre VM à l'aide de Google Cloud Console ou de Google Cloud CLI. Lorsque vous utilisez ces outils pour vous connecter, Compute Engine gère la création des clés à votre place. Pour en savoir plus, consultez la page Se connecter à des VM.
- Exécutez la commande suivante :
L'environnement invité de votre VM n'est pas en cours d'exécution. Si vous vous connectez pour la première fois à votre VM et que l'environnement invité n'est pas en cours d'exécution, la VM peut refuser votre requête de connexion SSH.
Pour résoudre ce problème, procédez comme suit :
- Redémarrez la VM.
- Dans la console Google Cloud, inspectez les journaux de démarrage du système dans la sortie du port série pour déterminer si l'environnement invité est en cours d'exécution. Pour en savoir plus, consultez la section Valider l'environnement invité.
- Si l'environnement invité n'est pas en cours d'exécution, installez-le manuellement en clonant le disque de démarrage de la VM et en utilisant un script de démarrage.
Le daemon
sshd
ne s'exécute pas ou n'est pas configuré correctement. Le daemonsshd
active les connexions SSH. S'il est mal configuré ou ne s'exécute pas, vous ne pouvez pas vous connecter à votre VM.Pour résoudre ce problème, procédez comme suit :
- Consultez le guide de l'utilisateur de votre système d'exploitation pour vous assurer que le fichier
sshd_config
est correctement configuré. Si vous avez précédemment modifié les autorisations relatives aux dossiers sur votre VM, rétablissez les valeurs par défaut :
- 700 sur le répertoire
.ssh
- 644 sur la clé publique, qui est stockée dans le dossier
~/.ssh/authorized_keys
Connectez-vous à la console série de la VM en tant qu'utilisateur racine, puis modifiez les autorisations des dossiers suivants :
chmod 700 /home/USERNAME/.ssh; chmod 644 /home/USERNAME/.ssh/authorized_keys
Remplacez USERNAME par le nom d'utilisateur pour lequel vous souhaitez modifier les autorisations associées au dossier.
- 700 sur le répertoire
- Consultez le guide de l'utilisateur de votre système d'exploitation pour vous assurer que le fichier
Le disque de démarrage de la VM est saturé. Lorsqu'une connexion SSH est établie, l'environnement invité ajoute la clé SSH publique de la session au fichier
~/.ssh/authorized_keys
. Si le disque est saturé, la connexion échoue.Pour résoudre ce problème, essayez une ou plusieurs des solutions suivantes :
- Vérifiez que le disque de démarrage est bien saturé en utilisant le débogage avec la console série pour identifier
no space left errors
. - Redimensionnez le disque.
- Si vous savez quels fichiers consomment l'espace disque, créez un script de démarrage qui supprime les fichiers inutiles et libère de l'espace. Une fois que la VM a démarré et que vous êtes connecté, supprimez les métadonnées
startup-script
.
- Vérifiez que le disque de démarrage est bien saturé en utilisant le débogage avec la console série pour identifier
La propriété de
$HOME
,$HOME/.ssh
ou$HOME/.ssh/authorized_keys
, ou les autorisations qui y sont associées, sont incorrectes.Propriété : l'environnement invité stocke la clé SSH publique d'un utilisateur dans le fichier
$HOME/.ssh/authorized_keys
. Le propriétaire du répertoire$HOME
, du répertoire$HOME/.ssh
et du fichierauthorized_keys
doit être l'utilisateur qui se connecte à la VM.Autorisations Unix : l'environnement invité nécessite les autorisations Unix suivantes :
Répertoire/Fichier Autorisation Unix requise Le répertoire $HOME
0755
ou0700
Le répertoire $HOME/.ssh
0700
Le fichier authorized_keys
0600
Échec de la connexion
Les erreurs suivantes peuvent se produire lorsque vous vous connectez à votre VM depuis la console Google Cloud ou gcloud CLI :
La console Google Cloud :
Connection Failed We are unable to connect to the VM on port 22.
gcloud CLI :
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].
Ces erreurs peuvent se produire pour plusieurs raisons. Voici quelques-unes des causes d'erreur les plus courantes :
La VM démarre et
sshd
n'est pas encore en cours d'exécution. Vous ne pouvez pas vous connecter à une VM avant qu'elle ne soit en cours d'exécution.Pour résoudre ce problème, attendez que le démarrage de la VM soit terminé puis réessayez de vous connecter.
La règle de pare-feu autorisant SSH est manquante ou mal configurée. Par défaut, les VM Compute Engine autorisent l'accès SSH sur le port 22. Si la règle
default-allow-ssh
est manquante ou mal configurée, vous ne pourrez pas vous connecter aux VM.Pour résoudre ce problème, vérifiez vos règles de pare-feu puis ajoutez ou configurez de nouveau
default-allow-ssh
.sshd
s'exécute sur un port personnalisé. Si vous avez configurésshd
pour qu'il s'exécute sur un port autre que le port 22, vous ne pourrez pas vous connecter à votre VM.Pour résoudre ce problème, créez une règle de pare-feu personnalisée autorisant le trafic
tcp
sur le port sur lequel votresshd
s'exécute à l'aide de la commande suivante :gcloud compute firewall-rules create FIREWALL_NAME \ --allow tcp:PORT_NUMBER
Pour plus d'informations sur la création de règles de pare-feu personnalisées, consultez la section Créer des règles de pare-feu.
Votre règle de pare-feu SSH personnalisée n'autorise pas le trafic en provenance de services Google. Les connexions SSH à partir de la console Google Cloud sont refusées si les règles de pare-feu personnalisées n'autorisent pas les connexions à partir d'IAP ou de la plage d'adresses IP de Google.
Pour résoudre ce problème, effectuez l'une des opérations suivantes :
Si vous utilisez Identity-Aware Proxy (IAP) pour le transfert TCP, mettez à jour votre règle de pare-feu personnalisée pour accepter le trafic provenant d'IAP, puis vérifiez vos autorisations IAM.
- Mettez à jour votre règle de pare-feu personnalisée pour autoriser le trafic provenant de
35.235.240.0/20
, la plage d'adresses IP utilisée par IAP pour le transfert TCP. Pour plus d'informations, consultez la section Créer une règle de pare-feu. - Accordez des autorisations pour utiliser le transfert TCP IAP, si ce n'est pas déjà fait.
- Mettez à jour votre règle de pare-feu personnalisée pour autoriser le trafic provenant de
Si vous n'utilisez pas IAP, mettez à jour votre règle de pare-feu personnalisée pour autoriser le trafic provenant de toute la plage d'adresses IP de Google.
- Mettez à jour votre règle de pare-feu personnalisée pour autoriser le trafic provenant d'adresses IP Google. Pour plus d'informations, consultez la section Mettre à jour des règles de pare-feu.
La connexion SSH a échoué après la mise à niveau du noyau de la VM. Une VM peut subir une panique du noyau après une mise à jour du noyau, ce qui la rend inaccessible.
Pour résoudre ce problème, procédez comme suit :
- Installez le disque sur une autre VM.
- Mettez à jour le fichier
grub.cfg
pour utiliser la version précédente du noyau. - Rattachez le disque à la VM qui ne répond pas.
- Vérifiez que l'état de la VM est bien
RUNNING
en utilisant la commandegcloud compute instances describe
. - Réinstallez le noyau.
- Redémarrez la VM.
Si vous avez créé un instantané du disque de démarrage avant de mettre à niveau la VM, vous pouvez également utiliser l'instantané pour créer une VM.
Le daemon
sshd
ne s'exécute pas ou n'est pas configuré correctement. Le daemonsshd
active les connexions SSH. S'il est mal configuré ou ne s'exécute pas, vous ne pouvez pas vous connecter à votre VM.Pour résoudre ce problème, procédez comme suit :
- Consultez le guide de l'utilisateur de votre système d'exploitation pour vous assurer que le fichier
sshd_config
est correctement configuré. Si vous avez précédemment modifié les autorisations relatives aux dossiers sur votre VM, rétablissez les valeurs par défaut :
- 700 sur le répertoire
.ssh
- 644 sur la clé publique, qui est stockée dans le dossier
~/.ssh/authorized_keys
Connectez-vous à la console série de la VM en tant qu'utilisateur racine, puis modifiez les autorisations des dossiers suivants :
chmod 700 /home/USERNAME/.ssh; chmod 644 /home/USERNAME/.ssh/authorized_keys
Remplacez USERNAME par le nom d'utilisateur pour lequel vous souhaitez modifier les autorisations associées au dossier.
- 700 sur le répertoire
- Consultez le guide de l'utilisateur de votre système d'exploitation pour vous assurer que le fichier
La VM ne démarre pas et vous ne pouvez pas vous connecter via SSH ou la console série. Si la VM est inaccessible, votre système d'exploitation est peut-être corrompu. Si le disque de démarrage ne démarre pas, vous pouvez diagnostiquer le problème. Si vous souhaitez récupérer la VM corrompue et récupérer les données, consultez la section Récupérer une VM corrompue ou un disque de démarrage complet.
La VM démarre en mode de maintenance. Lors du démarrage en mode de maintenance, la VM n'accepte pas les connexions SSH, mais vous pouvez vous connecter à la console série de la VM et vous connecter en tant qu'utilisateur racine.
Pour résoudre ce problème, procédez comme suit :
Si vous n'avez pas défini de mot de passe racine pour la VM, utilisez un script de démarrage des métadonnées pour exécuter la commande suivante au démarrage :
echo "NEW_PASSWORD" | chpasswd
Remplacez
NEW_PASSWORD
par le mot de passe de votre choix.Redémarrez la VM.
Connectez-vous à la console série de la VM, puis connectez-vous en tant qu'utilisateur racine.
Échec de la connexion au backend
Les erreurs suivantes peuvent se produire lorsque vous vous connectez à votre VM depuis la console Google Cloud ou gcloud CLI :
La console Google Cloud :
-- Connection via Cloud Identity-Aware Proxy Failed -- Code: 4003 -- Reason: failed to connect to backend
gcloud CLI :
ERROR: (gcloud.compute.start-iap-tunnel) Error while connecting [4003: u'failed to connect to backend'].
Ces erreurs se produisent lorsque vous essayez d'utiliser SSH pour vous connecter à une VM qui ne possède pas d'adresse IP publique et pour laquelle vous n'avez pas configuré Identity-Aware Proxy sur le port 22.
Pour résoudre ce problème, créez une règle de pare-feu sur le port 22 autorisant le trafic entrant provenant d'Identity-Aware Proxy.
La clé d'hôte ne correspond pas
L'erreur suivante peut se produire lorsque vous vous connectez à votre VM :
Host key for server IP_ADDRESS does not match
Cette erreur se produit lorsque la clé d'hôte dans le fichier ~/.ssh/known_hosts
ne correspond pas à la clé d'hôte de la VM.
Pour résoudre ce problème, supprimez la clé d'hôte du fichier ~/.ssh/known_hosts
, puis réessayez d'établir la connexion.
La valeur des métadonnées est trop élevée
L'erreur suivante peut se produire lorsque vous essayez d'ajouter une nouvelle clé SSH aux métadonnées :
ERROR:"Value for field 'metadata.items[X].value' is too large: maximum size 262144 character(s); actual size NUMBER_OF_CHARACTERS."
Les valeurs de métadonnées ont une limite maximale de 256 ko. Pour contourner cette limitation, effectuez l'une des opérations suivantes :
- Supprimez les clés SSH expirées ou en double des métadonnées du projet ou de l'instance. Pour plus d'informations, consultez la page Mettre à jour les métadonnées sur une VM en cours d'exécution.
- Utilisez OS Login.
Erreurs Windows
Autorisation refusée. Veuillez réessayer.
L'erreur suivante peut se produire lorsque vous vous connectez à votre VM :
USERNAME@compute.INSTANCE_ID's password: Permission denied, please try again.
Cette erreur indique que l'utilisateur qui tente de se connecter à la VM n'existe pas sur celle-ci. Voici quelques-unes des causes les plus courantes de cette erreur :
Votre version de gcloud CLI est obsolète
Si gcloud CLI est obsolète, vous essayez peut-être de vous connecter à l'aide d'un nom d'utilisateur non configuré. Pour résoudre ce problème, mettez à jour gcloud CLI.
Vous avez essayé de vous connecter à une VM Windows sur laquelle SSH n'est pas activé
Pour résoudre cette erreur, définissez la clé
enable-windows-ssh
surTRUE
dans les métadonnées du projet ou de l'instance. Pour en savoir plus sur la définition des métadonnées, consultez la page Définir des métadonnées personnalisées.
Autorisation refusée (clé publique, authentification via le clavier)
L'erreur suivante peut se produire lorsque vous vous connectez à une VM sur laquelle SSH n'est pas activé :
Permission denied (publickey,keyboard-interactive).
Pour résoudre cette erreur, définissez la clé enable-windows-ssh
sur TRUE
dans les métadonnées du projet ou de l'instance. Pour en savoir plus sur la définition des métadonnées, consultez la page Définir des métadonnées personnalisées.
Impossible de se connecter via SSH à l'instance
L'erreur suivante peut se produire lorsque vous vous connectez à votre VM depuis gcloud CLI :
ERROR: (gcloud.compute.ssh) Could not SSH into the instance. It is possible that your SSH key has not propagated to the instance yet. Try running this command again. If you still cannot connect, verify that the firewall and instance are set to accept ssh traffic.
Cette erreur peut se produire pour plusieurs raisons. Voici quelques-unes des causes d'erreur les plus courantes :
Vous avez essayé de vous connecter à une VM Windows sur laquelle SSH n'est pas installé
Pour résoudre ce problème, suivez les instructions de la section Activer SSH pour Windows sur une VM en cours d'exécution.
Le daemon
sshd
ne s'exécute pas ou n'est pas configuré correctement. Le daemonsshd
active les connexions SSH. S'il est mal configuré ou ne s'exécute pas, vous ne pouvez pas vous connecter à votre VM.Pour résoudre ce problème, consultez la page Configuration du serveur OpenSSH pour Windows Server et Windows pour vous assurer que
sshd
est correctement configuré.
Connexion expirée
L'expiration des connexions SSH peut être due à l'une des raisons suivantes :
Le démarrage de la VM n'est pas terminé. Patientez un court instant le temps que la VM démarre.
Pour résoudre ce problème, attendez que le démarrage de la VM soit terminé puis réessayez de vous connecter.
Le package SSH n'est pas installé. Les VM Windows nécessitent l'installation du package
google-compute-engine-ssh
pour que vous puissiez vous connecter via SSH.Pour résoudre ce problème, installez le package SSH.
Diagnostiquer les échecs de connexions SSH
Les sections suivantes décrivent les procédures à suivre pour diagnostiquer la cause des échecs de connexions SSH et résoudre les problèmes de connexion.
Avant de diagnostiquer les échecs de connexions SSH, procédez comme suit :
- Installez la dernière version de Google Cloud CLI ou appliquez la mise à jour correspondante.
- Lancez des tests de connectivité.
- Si vous utilisez une image Linux personnalisée qui n'exécute pas l'environnement invité, installez l'environnement invité Linux.
- Si vous utilisez OS Login, consultez la page Résoudre les problèmes liés à OS Login.
Méthodes de diagnostic pour les VM Linux et Windows
Tester la connectivité
Il est possible que vous ne puissiez pas utiliser SSH sur une instance de VM en raison de problèmes de connectivité liés aux pare-feu, à la connexion réseau ou au compte utilisateur. Dans ce cas, suivez les étapes de cette section pour identifier les problèmes de connectivité.
Vérifier les règles de pare-feu
Compute Engine provisionne chaque projet avec des règles de pare-feu par défaut qui autorisent le trafic SSH. Si vous ne parvenez pas à accéder à votre instance, utilisez l'outil de ligne de commande gcloud compute
pour vérifier votre liste de pare-feu et vous assurer que la règle default-allow-ssh
est bien présente.
Sur votre poste de travail local, exécutez la commande suivante :
gcloud compute firewall-rules list
Si elle est absente, ajoutez-la :
gcloud compute firewall-rules create default-allow-ssh \ --allow tcp:22
Pour afficher toutes les données associées à la règle de pare-feu default-allow-ssh
de votre projet, exécutez la commande gcloud compute firewall-rules describe
:
gcloud compute firewall-rules describe default-allow-ssh \ --project=project-id
Pour en savoir plus sur les règles de pare-feu, consultez la section Règles de pare-feu dans Google Cloud.
Tester la connexion réseau
Pour déterminer si la connexion réseau fonctionne, testez le handshake TCP :
Obtenez le
natIP
externe pour votre VM :gcloud compute instances describe VM_NAME \ --format='get(networkInterfaces[0].accessConfigs[0].natIP)'
Remplacez
VM_NAME
par le nom de la VM à laquelle vous ne parvenez pas à vous connecter.Testez la connexion réseau à votre VM depuis votre poste de travail :
Linux, Windows 2019/2022 et macOS
curl -vso /dev/null --connect-timeout 5 EXTERNAL_IP:PORT_NUMBER
Remplacez les éléments suivants :
EXTERNAL_IP
: adresse IP externe obtenue à l'étape précédente.PORT_NUMBER
: numéro de port.
Si le handshake TCP réussit, le résultat est semblable à celui-ci :
Expire in 0 ms for 6 (transfer 0x558b3289ffb0) Expire in 5000 ms for 2 (transfer 0x558b3289ffb0) Trying 192.168.0.4... TCP_NODELAY set Expire in 200 ms for 4 (transfer 0x558b3289ffb0) Connected to 192.168.0.4 (192.168.0.4) port 443 (#0) > GET / HTTP/1.1 > Host: 192.168.0.4:443 > User-Agent: curl/7.64.0 > Accept: */* > Empty reply from server Connection #0 to host 192.168.0.4 left intact
La ligne
Connected to
indique un handshake TCP ayant réussi.Windows 2012 et 2016
PS C:> New-Object System.Net.Sockets.TcpClient('EXTERNAL_IP',PORT_NUMBER)
Remplacez les éléments suivants :
EXTERNAL_IP
: adresse IP externe obtenue à l'étape précédente.PORT_NUMBER
: numéro de port.
Si le handshake TCP réussit, le résultat est semblable à celui-ci :
Available : 0 Client : System.Net.Sockets.Socket Connected : True ExclusiveAddressUse : False ReceiveBufferSize : 131072 SendBufferSize : 131072 ReceiveTimeout : 0 SendTimeout : 0 LingerState : System.Net.Sockets.LingerOption NoDelay : False
La ligne
Connected: True
indique un handshake TCP ayant réussi.
Si le handshake TCP a abouti, il n'y a pas de règle de pare-feu logicielle bloquant la connexion, le système d'exploitation transmet correctement les paquets et un serveur écoute sur le port de destination. Si le handshake TCP a abouti, mais que la VM n'accepte pas les connexions SSH, le problème peut être dû au fait que le daemon sshd
est mal configuré ou ne s'exécute pas correctement. Consultez le guide de l'utilisateur de votre système d'exploitation pour vous assurer que le fichier sshd_config
est correctement configuré.
Pour exécuter des tests de connectivité afin d'analyser la configuration du chemin du réseau VPC entre deux VM et vérifier si la configuration programmée doit autoriser le trafic, consultez la page Rechercher les règles de pare-feu mal configurées dans Google Cloud.
Se connecter avec un autre compte utilisateur
Le problème qui vous empêche de vous connecter peut provenir de votre compte d'utilisateur. Par exemple, les autorisations sur l'instance spécifiées dans le fichier ~/.ssh/authorized_keys
n'ont pas été définies correctement pour cet utilisateur.
Essayez de vous connecter en tant qu'utilisateur différent à l'aide de gcloud CLI en spécifiant ANOTHER_USERNAME
dans la requête SSH. gcloud CLI met à jour les métadonnées du projet pour ajouter le nouvel utilisateur et autoriser l'accès SSH.
gcloud compute ssh ANOTHER_USERNAME@VM_NAME
Remplacez les éléments suivants :
ANOTHER_USERNAME
est un nom d'utilisateur autre que le vôtre.VM_NAME
est le nom de la VM à laquelle vous souhaitez vous connecter.
Résoudre les problèmes à l'aide de la console série
Nous vous recommandons de consulter les erreurs de connexion dans les journaux de la console série. Vous pouvez accéder à la console série en tant qu'utilisateur racine depuis votre poste de travail local à l'aide d'un navigateur. Cette approche est utile lorsque vous ne pouvez pas vous connecter avec SSH ou si l'instance ne dispose d'aucune connexion au réseau. La console série reste accessible dans ces deux situations.
Pour vous connecter à la console série de la VM et résoudre les problèmes liés à la VM, procédez comme suit :
Activez l'accès interactif à la console série de la VM.
Pour les VM Linux, modifiez le mot de passe racine, puis ajoutez le script de démarrage suivant à votre VM :
Remplacez PASSWORD par le mot de passe de votre choix.usermod -p $(echo "PASSWORD" | openssl passwd -1 -stdin) root
Utilisez la console série pour vous connecter à votre VM.
Pour les VM Linux, une fois le débogage de toutes les erreurs terminé, désactivez la connexion du compte racine :
sudo passwd -l root
Méthodes de diagnostic pour les VM Linux
Inspecter une instance de VM sans l'arrêter
Il se peut que vous ne puissiez pas vous connecter à une instance qui continue de diffuser correctement le trafic de production. Dans ce cas, vous pouvez tenter d'inspecter le disque sans interrompre l'instance.
Pour inspecter le disque et résoudre les problèmes, procédez comme suit :
- Sauvegardez votre disque de démarrage en créant un instantané du disque.
- Créez un disque persistant standard à partir de cet instantané.
- Créez une instance temporaire.
- Associez le disque persistant standard à votre nouvelle instance temporaire et installez-le sur celle-ci.
Cette procédure crée un réseau isolé qui n'autorise que les connexions SSH. Cette configuration évite les conséquences imprévues des interférences de l'instance clonée avec les services de production.
Créez un réseau VPC pour héberger l'instance clonée :
gcloud compute networks create debug-network
Remplacez
NETWORK_NAME
par le nom que vous souhaitez donner à votre nouveau réseau.Ajoutez une règle de pare-feu pour autoriser les connexions SSH au réseau :
gcloud compute firewall-rules create debug-network-allow-ssh \ --network debug-network \ --allow tcp:22
Créez un instantané du disque de démarrage.
gcloud compute disks snapshot BOOT_DISK_NAME \ --snapshot-names debug-disk-snapshot
Remplacez
BOOT_DISK_NAME
par le nom du disque de démarrage.Créez un disque avec l'instantané que vous venez de générer :
gcloud compute disks create example-disk-debugging \ --source-snapshot debug-disk-snapshot
Créez une instance de débogage sans adresse IP externe :
gcloud compute instances create debugger \ --network debug-network \ --no-address
Associez le disque de débogage à l'instance :
gcloud compute instances attach-disk debugger \ --disk example-disk-debugging
Suivez les instructions pour vous connecter à une instance sans adresse IP externe.
Une fois connecté à l'instance de débogage, dépannez l'instance. Par exemple, vous pouvez consulter les journaux de l'instance :
sudo su -
mkdir /mnt/VM_NAME
mount /dev/disk/by-id/scsi-0Google_PersistentDisk_example-disk-debugging /mnt/VM_NAME
cd /mnt/VM_NAME/var/log
# Identify the issue preventing ssh from working ls
Remplacez
VM_NAME
par le nom de la VM à laquelle vous ne parvenez pas à vous connecter.
Utiliser un script de démarrage
Si aucune des solutions précédentes ne vous aide, vous pouvez créer un script de démarrage pour collecter des informations juste après le démarrage de l'instance. Suivez les instructions pour exécuter un script de démarrage.
Vous devez ensuite réinitialiser votre instance avant que les métadonnées ne soient affectées en exécutant la commande gcloud compute instances reset
.
Vous pouvez également recréer l'instance avec un script de démarrage de diagnostic :
Exécutez
gcloud compute instances delete
avec l'indicateur--keep-disks
.gcloud compute instances delete VM_NAME \ --keep-disks boot
Remplacez
VM_NAME
par le nom de la VM à laquelle vous ne parvenez pas à vous connecter.Ajoutez une nouvelle instance avec le même disque et spécifiez le script de démarrage.
gcloud compute instances create NEW_VM_NAME \ --disk name=BOOT_DISK_NAME,boot=yes \ --metadata startup-script-url URL
Remplacez les éléments suivants :
NEW_VM_NAME
est le nom de la VM que vous créez.BOOT_DISK_NAME
est le nom du disque de démarrage de la VM à laquelle vous ne parvenez pas à vous connecter.URL
est l'URL Cloud Storage d'accès au script, au formatgs://BUCKET/FILE
ouhttps://storage.googleapis.com/BUCKET/FILE
.
Utiliser le disque sur une nouvelle instance
Si vous devez toujours récupérer des données à partir de votre disque de démarrage persistant, vous pouvez dissocier le disque de démarrage, puis l'associer à une nouvelle instance en tant que disque secondaire.
Supprimez la VM à laquelle vous ne parvenez pas à vous connecter et conservez son disque de démarrage :
gcloud compute instances delete VM_NAME \ --keep-disks=boot
Remplacez
VM_NAME
par le nom de la VM à laquelle vous ne parvenez pas à vous connecter.Créez une VM avec le disque de démarrage de l'ancienne VM. Spécifiez le nom du disque de démarrage de la VM que vous venez de supprimer.
Connectez-vous à votre VM à l'aide de SSH :
gcloud compute ssh NEW_VM_NAME
Remplacez
NEW_VM_NAME
par le nom de votre nouvelle VM.
Vérifier si le disque de démarrage de la VM est saturé
Votre VM peut devenir inaccessible si son disque de démarrage est saturé. Ce scénario peut être difficile à identifier : il n'est pas toujours évident de savoir si le problème de connectivité des VM est dû à un disque de démarrage saturé. Pour plus d'informations sur ce scénario, consultez la section Dépannage d'une VM inaccessible en raison d'un disque de démarrage saturé.
Méthodes de diagnostic pour les VM Windows
Réinitialiser les métadonnées SSH
Si vous ne pouvez pas vous connecter à une VM Windows à l'aide de SSH, annulez la définition de la clé de métadonnées enable-windows-ssh
et réactivez SSH pour Windows.
Définissez la clé de métadonnées
enable-windows-ssh
surFALSE
. Pour en savoir plus sur la définition des métadonnées, consultez la page Définir des métadonnées personnalisées.Attendez quelques secondes que la modification prenne effet.
Se connecter à la VM à l'aide de RDP
Si vous ne parvenez pas à diagnostiquer et à résoudre la cause des échecs des connexions SSH à votre VM Windows, connectez-vous à l'aide de RDP.
Une fois la connexion à la VM établie, consultez les journaux OpenSSH.
Étape suivante
- Découvrez comment les connexions SSH aux VM Linux fonctionnent sur Compute Engine.