Passer au contenu

Pourquoi ne puis-je pas me connecter à mon instance de base de données Amazon EC2 ?

Lecture de 11 minute(s)
0

Lorsque j'essaie de me connecter à mon instance Amazon Elastic Compute Cloud (Amazon EC2), un message d'erreur s'affiche.

Brève description

Tout d'abord, vérifiez la configuration de votre instance EC2 et assurez-vous que l'instance répond aux états de l'instance et du système.

Si vous ne parvenez toujours pas à vous connecter, rétablissez votre connexion pour le protocole SSH, EC2 Instance Connect ou Session Manager, une fonctionnalité d'AWS Systems Manager. Vous pouvez également utiliser l’EC2 Serial Console pour rétablir votre connexion.

Remarque : généralement, vous utilisez l’EC2 Serial Console uniquement pour résoudre les problèmes, et non pour exécuter des processus standard.

Si une méthode de connexion ne fonctionne pas, utilisez une autre méthode de connexion pour accéder à votre instance et résoudre les problèmes.

Si vous ne parvenez toujours pas à rétablir votre connexion, utilisez une instance de secours pour vérifier la présence d'erreurs dans les journaux de l'instance concernée.

Résolution

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Vérifier la configuration de l'accès à l’instance

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

Les règles du groupe de sécurité entrant doivent autoriser l'accès depuis votre adresse IP au port 22 pour Linux et au port 3389 pour Windows.

Pour vérifier les règles de votre groupe de sécurité, exécutez la commande describe-security-groups de l'AWS CLI suivante :

aws ec2 describe-security-groups --group-ids SG-IDs

Remarque : remplacez SG-IDs par les ID de votre groupe de sécurité.

Si le port 22 ou 3389 ne figure pas sur votre liste d'autorisation, exécutez la commande authorize-security-group-ingress suivante pour mettre à jour vos règles afin d'autoriser l'accès :

aws ec2 authorize-security-group-ingress --group-id SG-ID --protocol tcp --port 22 --cidr SOURCE-IP/32

Remarque : remplacez SG-ID par l'ID de votre groupe de sécurité et SOURCE-IP par votre adresse IP source. Si vous utilisez une instance Windows, remplacez 22 par 3389. Si l'adresse IP source est une adresse IP publique, vous pouvez utiliser l'outil checkip.amazonaws.com pour identifier l'adresse IP.

Vérifier vos listes ACL réseau

Par défaut, les listes de contrôle d'accès au réseau (ACL réseau) autorisent tout le trafic entrant et sortant. Assurez-vous que vos ACL réseau autorisent l'accès SSH entrant à l'instance et l'accès sortant aux ports éphémères (1024-65535). Si les ACL réseau bloquent le port 22 ou 3389, ajoutez une nouvelle règle pour autoriser le trafic. Pour les adresses IP publiques, assurez-vous que la table de routage contient une entrée qui achemine le trafic vers une passerelle Internet.

Vérifier vos tables de routage

Vérifiez que votre table de routage comporte une route pour la connexion.

S’assurer que l’instance réussit ses vérifications d’état

Pour se connecter à une instance, celle-ci doit réussir ses vérifications d’état. Utilisez la console Amazon EC2 pour vérifier si l'état du système et l'état de l'instance indiquent OK. Vous pouvez également utiliser les métriques Amazon CloudWatch pour vérifier l'état de votre instance et identifier les problèmes qui affectent la connectivité.

Remarque : il est recommandé de vérifier la maintenance planifiée et d'autres événements susceptibles d'affecter la connectivité de l'instance.

Si l'état de l'instance n'est pas OK, redémarrez votre instance. Le redémarrage d'une instance permet généralement de résoudre des problèmes mineurs. Si vous ne parvenez toujours pas à vous connecter ou si l'état du système n'est pas correct, le problème provient peut-être de l'infrastructure AWS. Pour résoudre ce problème, consultez la section Pourquoi mon instance Amazon EC2 est-elle en panne en cas d'échec de la vérification de l'état du système ?

Si vous rencontrez toujours des problèmes, consultez la section Comment résoudre les problèmes liés à la vérification de l'état de mon instance Linux EC2 ? ou Pourquoi mon instance Windows EC2 est-elle en panne en raison d'un échec de vérification de l'état de l'instance ?

Résoudre les erreurs de connexion

Si votre instance réussit les vérifications d’état, mais que vous obtenez des erreurs de connexion, consultez les ressources suivantes :

Rétablir votre connexion SSH

Remarque : si vous avez perdu votre paire de clés SSH, consultez la section Comment me connecter à mon instance Amazon EC2 si je perds ma paire de clés SSH après le lancement initial de l'instance ?

Vérifier les paramètres de votre nom d'utilisateur et de votre adresse IP

Assurez-vous d'utiliser le nom d'utilisateur approprié pour votre instance. Puis, connectez-vous à l'instance à partir d'une adresse IP publique.

Remarque : si vous vous connectez à partir d'une adresse IP privée, assurez-vous que vous disposez d'une connexion réseau fonctionnelle à l'instance de destination.

Vérifier l'état du serveur SSH

Pour vérifier l'état du serveur SSH, utilisez Session Manager, EC2 Instance Connect ou l’EC2 Serial Console pour vous connecter à l'instance.

Exécutez la commande suivante pour vérifier l'état du service SSH en fonction de votre distribution :

Systèmes utilisant systemd :

sudo systemctl status sshd

Systèmes Ubuntu ou Debian :

sudo systemctl status ssh

Systèmes existants, tels que CentOS 6 :

sudo service sshd status

Si l'état du service SSH est Arrêté, exécutez la commande suivante pour démarrer le service en fonction de votre distribution :

Systèmes utilisant systemd :

sudo systemctl start sshd

Systèmes Ubuntu ou Debian :

systemctl start ssh

Systèmes existants, tels que CentOS 6 :

sudo service sshd start

Vérifier les autorisations de votre fichier de clé privée

Assurez-vous que votre fichier de clé privée dispose des autorisations de lecture requises.

Tester la connectivité réseau

Pour tester la connectivité au port 22, exécutez l'une des commandes suivantes depuis votre client :

nc -zv Host 22

-ou-

telnet Host 22

Remarque : remplacez Host par votre adresse IP ou le nom de domaine complet (FQDN).

Pus, exécutez la commande suivante pour vous connecter à votre instance en mode détaillé via SSH :

ssh -i key_pair.pem user@Host -vvv

Remarque : remplacez Host par votre adresse IP ou le FQDN.

Pour résoudre les problèmes de connexion, consultez les sections Comment résoudre les erreurs « Connection refused » ou « Connection timed out » lorsque je me connecte à mon instance EC2 via SSH ? et Résoudre les problèmes de connexion à votre instance Amazon EC2 Linux.

Rétablir votre connexion à EC2 Instance Connect

Tout d'abord, utilisez SSH, Session Manager ou l’EC2 Serial Console pour vous connecter à votre instance afin de vous assurer que vous avez bien installé EC2 Instance Connect. Puis, utilisez EC2 Instance Connect pour vous connecter à l'instance.

Si vous rencontrez des problèmes lorsque vous utilisez EC2 Instance Connect, assurez-vous d'autoriser le trafic SSH entrant sur le port 22 pour le nom de la liste de préfixes com.amazonaws.region.ec2-instance-connect. En outre, vérifiez que la politique de votre utilisateur Gestion des identités et des accès AWS (AWS IAM) inclut l'action ec2-instance-connect:SendSSHPublicKey.

Si les problèmes persistent, consultez la section Comment résoudre les erreurs que je reçois lorsque j'utilise EC2 Instance Connect pour me connecter à mon instance EC2 ?

Utiliser l’EC2 Serial Console pour rétablir la connexion

Prérequis : configurez l’accès à l’EC2 Serial Console.

Pour utiliser l’EC2 Serial Console afin de vous connecter à votre instance, vous pouvez utiliser la console Amazon EC2 ou SSH. Pour en savoir plus, consultez la section Comment accéder à l’EC2 Serial Console d'une instance Linux injoignable ou inaccessible ?

Une fois que vous êtes connecté, remédiez aux problèmes liés à votre instance pour le démarrage, la configuration réseau ou autres.

Si vous rencontrez des problèmes lorsque vous utilisez l’EC2 Serial Console, assurez-vous que votre politique IAM inclut l'action ec2-instance-connect:SendSerialConsoleSSHPublicKey.

Rétablir votre connexion à Session Manager

Session Manager gère l'authentification uniquement par le biais de rôles et d'autorisations IAM plutôt qu’à l’aide de clés SSH. Avant d'utiliser Session Manager, assurez-vous de respecter les prérequis pour Session Manager. Puis, utilisez Session Manager pour vous connecter à votre instance.

Si vous rencontrez des problèmes lors de l'utilisation de Session Manager, procédez comme suit.

Vérifier vos rôles IAM

Vérifiez que l'instance utilise un rôle IAM associé à la politique AmazonSSMManagedInstanceCore.

Ou assurez-vous que le rôle dispose des autorisations requises suivantes :

  • ssmmessages:CreateControlChannel
  • ssmmessages:CreateDataChannel
  • ssmmessages:OpenControlChannel
  • ssmmessages:OpenDataChannel

Vous pouvez ajouter les autorisations Session Manager requises à un rôle existant.

Remarque : si vous utilisez la configuration de gestion des hôtes par défaut pour gérer vos instances, il n’est pas nécessaire de créer un profil d'instance IAM pour gérer les instances.

Si vous mettez à jour les autorisations, détachez et rattachez le rôle IAM. Patientez quelques minutes, puis démarrez AWS Systems Manager Agent (SSM Agent) ou démarrez l'instance.

Résoudre les problèmes liés à l'état de SSM Agent

Vérifiez que vous avez installé SSM Agent sur l'instance.

Utilisez SSH, l’EC2 Serial Console ou EC2 Instance Connect pour vous connecter à votre instance. Puis, exécutez la commande suivante pour vérifier l'état de SSM Agent en fonction de votre distribution :

Systèmes utilisant systemd :

sudo systemctl status amazon-ssm-agent

Pour les systèmes Debian ou Ubuntu :

sudo systemctl status snap.amazon-ssm-agent.amazon-ssm-agent.service

Si l'état de l'agent est Arrêté, exécutez la commande suivante pour le démarrer, en fonction de votre distribution.

Systèmes utilisant systemd :

sudo systemctl start amazon-ssm-agent

Pour les systèmes Debian ou Ubuntu :

sudo systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service

Pour vérifier que SSM Agent est en cours d'exécution, consultez le journal système.

Il est recommandé d’utiliser la dernière version de SSM Agent. Pour vérifier si vous disposez de la dernière version, consultez la page amazon-ssm-agent/RELEASENOTES sur le site Web de GitHub. Si vous ne disposez pas de la dernière version, installez un SSM Agent mis à jour en fonction de votre système d'exploitation.

Pour une résolution plus poussée, vérifiez la présence d'erreurs dans les journaux /var/log/amazon/ssm/amazon-ssm-agent.log. Vous pouvez également consulter la section Résolution de problèmes liés à SSM Agent.

Vérifier la connectivité réseau

Assurez-vous que vos ACL réseau et vos groupes de sécurité autorisent une connexion sortante au point de terminaison AWS Systems Manager sur le port 443.

Si votre instance n'apparaît pas dans Session Manager, consultez la section Pourquoi Systems Manager n'affiche-t-il pas mon instance Amazon EC2 en tant qu'instance gérée ?

Pour les instances privées, créez des points de terminaison de cloud privé virtuel (VPC). Dans Nom du service, sélectionnez com.amazonaws.REGION.ssm et com.amazonaws.REGION.ssmmessages.

Remarque : remplacez REGION par votre région AWS.

Le groupe de sécurité que vous attachez aux points de terminaison de VPC doit autoriser le trafic entrant sur le port 443.

Pour plus d'informations, consultez la section Impossible de se connecter aux points de terminaison SSM.

Vérifier l’existence de prérequis manquants

Utilisez SSH, l’EC2 Serial Console ou EC2 Instance Connect pour vous connecter à votre instance, puis exécutez les commandes suivantes pour résoudre les problèmes liés à la disponibilité des nœuds gérés :

sudo ssm-cli get-diagnostics --output table

Vérifiez la sortie pour les prérequis de Session Manager manquants.

Vous pouvez également exécuter un dossier d'exploitation Systems Manager pour vérifier automatiquement les prérequis manquants. Exécutez AWSSupport-TroubleshootManagedInstance pour vérifier la configuration de votre VPC, notamment les règles des groupes de sécurité, les points de terminaison de VPC, les règles de l’ACL réseau, les tables de routage et les profils IAM. Ou bien, exécutez AWSSupport-TroubleshootSessionManager pour vérifier si vous respectez les prérequis de Session Manager.

Vérifier les journaux de la console d'instance

Si vous ne pouvez pas utiliser les méthodes précédentes pour vous connecter à votre instance, exécutez le script de données utilisateur afin de rétablir la connexion à Session Manager :

Content-Type: multipart/mixed; boundary="//"MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash

sudo ssm-cli get-diagnostics --output table >> /dev/console
# or
sudo ssm-cli get-diagnostics --output table >> /dev/ttyS0

Puis, vérifiez la sortie de la console d'instance pour identifier l'étape de connexion défaillante. Après avoir résolu l'étape défaillante, utilisez Session Manager pour tester votre connexion.

Si vous ne parvenez toujours pas à vous connecter, utilisez une instance de secours pour résoudre les problèmes de démarrage.

Informations connexes

Résoudre les problèmes liés aux instances Amazon EC2