Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment puis-je résoudre les erreurs « Permission denied (publickey) » ou « Authentication failed, permission denied » lorsque j’accède à mon instance EC2 ?
Lorsque j’accède à mon instance Amazon Elastic Compute Cloud (Amazon EC2), le message d’erreur « Permission denied (publickey) » ou « Authentication failed, permission denied » s’affiche.
Brève description
Les erreurs Permission denied (publickey) et Authentication failed, permission denied se produisent pour les raisons suivantes :
- Vous utilisez le nom d'utilisateur incorrect pour votre Amazon Machine Image (AMI) lorsque vous vous connectez.
- Vous disposez d’autorisations de fichier incorrectes dans le système d'exploitation (OS) de l'instance.
- Le fichier authorized_keys contient une clé publique SSH (.pub) incorrecte ou vous avez lancé votre instance sans clé.
- Votre fichier authorized_keys ou votre dossier .ssh n'est pas nommé correctement.
- Votre fichier authorized_keys ou votre dossier .ssh a été supprimé.
- (Ubuntu 20.x uniquement) Vous utilisez AuthorizedKeysCommand dans votre configuration SSH.
Résolution
Vérifier que vous disposez du nom d'utilisateur correct pour votre AMI
Assurez-vous d'utiliser un nom d'utilisateur valide pour votre AMI.
Vérifier que les autorisations de fichiers du système d’exploitation sont correctes et que la clé publique SSH adéquate se trouve dans le fichier authorized_keys
Pour vérifier votre configuration, appliquez l'une des méthodes suivantes.
Utiliser EC2 Serial Console
Si vous avez activé EC2 Serial Console pour Linux, vous pouvez l’utiliser pour résoudre les problèmes liés aux types d’instances basées sur Nitro pris en charge. La console de série se connecte à votre instance sans qu’aucune connexion réseau ne soit nécessaire. Vous pouvez accéder à la console de série à partir de la console Amazon EC2 ou de l'interface de la ligne de commande AWS (AWS CLI).
Avant d’utiliser la console de série, accordez l'accès à la console au niveau du compte AWS. Puis, créez des stratégies AWS Identity and Access Management (IAM) qui accordent aux utilisateurs IAM l'accès à la console. Chaque instance qui utilise la console de série doit inclure au moins un utilisateur avec mot de passe. Pour en savoir plus sur la procédure de configuration d’EC2 Serial Console pour Linux, consultez la section Configurer l’accès à EC2 Serial Console.
Si votre instance est inaccessible et que vous n'avez pas configuré l'accès à la console de série, utilisez une autre méthode pour vérifier votre configuration.
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Utiliser Systems Manager Session Manager
Remarque : Pour utiliser cette méthode, vous devez installer SSM Agent. Pour obtenir une liste des prérequis afin d’utiliser Systems Manager, consultez la section Étape 1 : Remplir les prérequis de Session Manager.
Utilisez AWS Systems Manager Session Manager pour vous connecter à l’instance et effectuer les corrections. Procédez comme suit :
-
Ouvrez la console Systems Manager.
-
Pour vérifier si les autorisations des fichiers situés dans le répertoire personnel, exécutez la commande ls -ld :
ls -ld /home/ec2-user/
Remarque : Remplacez ec2-user par votre nom d'utilisateur en fonction de votre instance Amazon Machine Image (AMI).
Vous obtenez une sortie similaire à la sortie suivante :drwx------ 3 ec2-user ec2-user 4096 Apr 1 08:31 /home/ec2-user/
L'exemple suivant affiche une liste des autorisations requises correctes :
Pour le répertoire personnel /home Linux, utilisez (0755/drwxr-xr-x).
Pour le répertoire personnel de l'utilisateur /home/ec2-user/, utilisez (0700/drwx------).
Pour l'autorisation de répertoire .ssh /home/ec2-user/.ssh, utilisez (0700/drwx------).
Pour l'autorisation de fichier authorized_keys /home/ec2-user/.ssh/authorized_keys, utilisez (0600/-rw-------). -
Sur votre ordinateur local, vérifiez que vous utilisez une clé publique SSH.
-
Si la signature de la clé publique SSH n’est pas présente dans la sortie, mettez à jour le fichier authorized_keys pour autoriser votre clé SSH. Exécutez la commande suivante :
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVogCW5eZogRp+vF6Ut360b0bYyTmqgYaCXOyiW77I916AS5jFL3zsCtONbGn4hnG/UGGWXpLfUV85qpVJb38fskPZNuyZtjGjXM2W7qqbCZ1N9HBb6IPBaL97tmqBi+8rD7mSkoHc40sIV+KxkQSvD6AAFjQruCjxzfGIApnOvuj6IMsVEuFHBx4QhkbCzafxo02D9BZT4+dMy7tmyuC+UiNEQpgfFoszl+4VNFTIPlQQyn6CpUiV/rFXIadXsHqc+UOdVnfEXP+30YL75RHabze/1F5MY6t94AEcmcb05Dq4vwN9IjcxKmwgvxLOXzryytepvHQU+PobBEXAMPLE' >> /home/ec2-user/.ssh/authorized_keys
Remarque : Remplacez l’exemple de clé par votre clé publique SSH.
-
Pour corriger les autorisations, exécutez les commandes suivantes sur votre instance EC2 :
sudo chown root:root /home sudo chmod 755 /home sudo chown ec2-user:ec2-user /home/ec2-user -R sudo chmod 700 /home/ec2-user /home/ec2-user/.ssh sudo chmod 600 /home/ec2-user/.ssh/authorized_keys
Exécutez le dossier d’exploitation AWSSupport-TroubleshootSSH Automation
Utilisez AWSSupport-TroubleshootSSH pour rechercher et corriger les problèmes qui provoquent des erreurs de connexion à distance à une machine Linux via SSH. Pour plus d’informations, consultez la section Je reçois des erreurs lorsque j’essaie de me connecter à mon instance EC2 via SSH. Comment utiliser le flux de travail d’automatisation AWSSupport-TroubleshootSSH pour résoudre les problèmes de connexion SSH ?
Utilisez un script de données utilisateur pour réparer les autorisations SSH et ajoutez la clé publique SSH correcte au fichier authorized_keys
Important : Pour utiliser cette méthode, vous devez arrêter l'instance. Lorsque vous arrêtez l'instance, les effets suivants se produisent :
- Si votre instance est basée sur un stockage d’instances Amazon Elastic Block Storage (Amazon EBS) ou inclut des volumes de stockage d'instances contenant des données, les données sont perdues.
- Si votre instance fait partie d'un groupe Amazon EC2 Auto Scaling, un arrêt d’Amazon EC2 Auto Scaling peut entraîner sa résiliation. Les instances que vous lancez avec Amazon EMR, AWS CloudFormation ou AWS Elastic Beanstalk peuvent faire partie d'un groupe Auto Scaling. La résiliation d'une instance dépend des paramètres de protection contre la mise à l’échelle pour votre groupe Auto Scaling. Si votre instance fait partie d'un groupe Auto Scaling, supprimez-la temporairement du groupe Auto Scaling avant de suivre les étapes ci-dessous.
- L'adresse IP publique de l'instance change. Lorsque vous acheminez le trafic externe vers votre instance, il est recommandé d'utiliser une adresse IP Elastic au lieu d'une adresse IP publique.
Pour réparer vos autorisations SSH, procédez comme suit :
-
Ouvrez la console Amazon EC2.
-
Sélectionnez Instances dans le volet de navigation, puis sélectionnez l'instance à laquelle vous souhaitez vous connecter.
-
Sélectionnez Actions, puis Paramètres de l’instance.
-
Sélectionnez Modifier les données utilisateur.
-
Pour Modifier les données utilisateur, saisissez le script de données utilisateur suivant :
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 OS_USER=os-user chown root:root /home chmod 755 /home chown $OS_USER:$OS_USER /home/$OS_USER -R chmod 700 /home/$OS_USER chmod 700 /home/$OS_USER/.ssh chmod 600 /home/$OS_USER/.ssh/authorized_keys --//
Remarque : Remplacez os-user par le nom d'utilisateur associé à l'AMI que vous avez utilisée pour lancer votre instance.
-
Sélectionnez Enregistrer.
-
Sur votre ordinateur local, vérifiez que vous utilisez une clé publique SSH.
-
Si la signature de la clé publique SSH ne figure pas dans la sortie, ajoutez la clé au script de données utilisateur. Si la signature correspond, passez à l'étape suivante.
Exemple de script de données utilisateur avec une clé publique SSH :
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 OS_USER=os-user chown root:root /home chmod 755 /home chmod 700 /home/$OS_USER chmod 700 /home/$OS_USER/.ssh chmod 600 /home/$OS_USER/.ssh/authorized_keys echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVogCW5eZogRp+vF6Ut360b0bYyTmqgYaCXOyiW77I916AS5jFL3zsCtONbGn4hnG/UGGWXpLfUV85qpVJb38fskPZNuyZtjGjXM2W7qqbCZ1N9HBb6IPBaL97tmqBi+8rD7mSkoHc40sIV+KxkQSvD6AAFjQruCjxzfGIApnOvuj6IMsVEuFHBx4QhkbCzafxo02D9BZT4+dMy7tmyuC+UiNEQpgfFoszl+4VNFTIPlQQyn6CpUiV/rFXIadXsHqc+UOdVnfEXP+30YL75RHabze/1F5MY6t94AEcmcb05Dq4vwN9IjcxKmwgvxLOXzryytepvHQU+PobBEXAMPLE' >> /home/$OS_USER/.ssh/authorized_keys chown $OS_USER:$OS_USER /home/$OS_USER -R --//
Remarque : Le script de données utilisateur précédent est configuré pour s’exécuter à chaque redémarrage de l’instance. Une fois l’accès à votre instance rétabli, supprimez le script de données utilisateur.
(Ubuntu 20.x uniquement) Vérifier la configuration SSH de AuthorizedKeysCommand
Dans Ubuntu 20.x, EC2 Instance Connect est installé par défaut. Lorsque vous configurez les paramètres AuthorizedKeysCommand et AuthorizedKeysCommandUser pour l’authentification SSH, l'installation d'EC2 Instance Connect ne met pas à jour ces paramètres. Par conséquent, vous ne pouvez pas utiliser EC2 Instance Connect. Pour résoudre ce problème, supprimez AuthorizedKeysCommand et AuthorizedKeysCommandUser de votre configuration SSH.
Informations connexes
Comment puis-je résoudre les problèmes de connexion à mon instance Linux Amazon EC2 via SSH ?
J’ai perdu ma clé privée. Comment puis-je me connecter à mon instance ?
Vidéos associées


Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a 2 anslg...
- demandé il y a 2 anslg...
- Réponse acceptéedemandé il y a 9 moislg...
- AWS OFFICIELA mis à jour il y a 5 mois
- AWS OFFICIELA mis à jour il y a 3 mois
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 6 mois