Le message d’erreur « Autorisation refusée (publickey) » ou « Échec de l’authentification, autorisation refusée » s’affiche lorsque je tente d’accéder à mon instance EC2. Comment puis-je corriger ces erreurs ?
Le message d’erreur « Autorisation refusée (publickey) » ou « Échec de l’authentification, autorisation refusée » s’affiche lorsque j’accède à mon instance Amazon Elastic Compute Cloud (Amazon EC2).
Brève description
Les erreurs « Autorisation refusée (Publickey) » ou « Échec de l’authentification, autorisation refusée » se produisent dans les cas suivants :
- vous essayez de vous connecter en utilisant le mauvais nom d’utilisateur pour votre AMI.
- les autorisations de fichier dans le système d’exploitation sont incorrectes sur l’instance.
- le fichier de clé publique SSH (.pub) incorrect se trouve dans le fichier authorized_keys.
Résolution
Vérifier que vous utilisez bien le bon nom d’utilisateur pour votre AMI
Pour obtenir la liste des noms d’utilisateur valides, consultez la section Erreur : Le serveur a refusé notre clé ou aucune méthode d’authentification prise en charge n’est disponible.
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
Il existe quatre méthodes pour effectuer ces tâches :
Méthode 1 : 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 Nitro pris en charge. La console de série permet de résoudre les problèmes de démarrage, de configuration réseau et de configuration SSH. 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 à l’aide de la console Amazon EC2 ou d’AWS Command Line Interface (AWS CLI).
Avant d’utiliser la console de série, accordez-lui l’accès au niveau du compte. Créez ensuite des politiques de gestion des identités et des accès AWS (IAM) qui accordent l’accès à vos utilisateurs IAM. En outre, chaque instance qui utilise console de série doit inclure au moins un utilisateur avec mot de passe. Si votre instance est inaccessible et que vous n’avez pas configuré l’accès à la console série, suivez les instructions de la méthode 2, 3 ou 4. Pour en savoir plus sur la configuration d’EC2 Serial Console pour Linux, consultez la section Configurer l’accès à EC2 Serial Console.
Remarque : en cas d’erreurs lors de l’exécution de commandes AWS CLI, vérifiez que vous utilisez bien la version la plus récente d’AWS CLI.
Méthode 2 : utiliser le gestionnaire de session d’AWS Systems Manager pour vous connecter à l’instance et effectuer les corrections
Cette méthode met à jour les autorisations et injecte votre clé publique SSH dans le fichier authorized_keys.
Remarque : l’installation de l’agent SSM est requise pour utiliser cette méthode. Pour en savoir plus sur le gestionnaire de session et une liste complète des prérequis, consultez la section Configuration du gestionnaire de session.
1. Ouvrez la console AWS Systems Manager.
3. Utilisez la commande Is -Id pour vous assurer que les autorisations des fichiers situés dans le répertoire personnel sont correctes. Voici la liste des autorisations correctes :
- Le répertoire personnel de Linux, /home, par exemple, doit être (0755/drwxr-xr-x).
- Le répertoire personnel de l’utilisateur, /home/ec2-user/, par exemple, doit être (0700/drwx------).
- L’autorisation du répertoire .ssh, /home/ec2-user/.ssh, par exemple, doit être (0700/drwx------).
- Le fichier d’autorisation authorized_keys, /home/ec2-user/.ssh/authorized_keys, par exemple, doit être (0600/-rw-------).
Voici un exemple de la commande Is -Id et de la sortie qui en résulte. Dans cet exemple, ec2-user est le nom d’utilisateur. Modifiez le nom d’utilisateur en fonction de votre AMI spécifique.
$ ls -ld /home/ec2-user/ drwx------ 3 ec2-user ec2-user 4096 Apr 1 08:31 /home/ec2-user/
4. Sur votre ordinateur local, vérifiez la clé publique SSH.
5. Si la signature de la clé publique SSH n’est pas présente dans les résultats, mettez à jour le fichier authorized_keys pour autoriser votre clé SSH. Dans l’exemple suivant, remplacez l’exemple de clé par votre clé publique SSH.
$ echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVogCW5eZogRp+vF6Ut360b0bYyTmqgYaCXOyiW77I916AS5jFL3zsCtONbGn4hnG/UGGWXpLfUV85qpVJb38fskPZNuyZtjGjXM2W7qqbCZ1N9HBb6IPBaL97tmqBi+8rD7mSkoHc40sIV+KxkQSvD6AAFjQruCjxzfGIApnOvuj6IMsVEuFHBx4QhkbCzafxo02D9BZT4+dMy7tmyuC+UiNEQpgfFoszl+4VNFTIPlQQyn6CpUiV/rFXIadXsHqc+UOdVnfEXP+30YL75RHabze/1F5MY6t94AEcmcb05Dq4vwN9IjcxKmwgvxLOXzryytepvHQU+PobBEXAMPLE' >> /home/ec2-user/.ssh/authorized_keys
6. 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
8. Connectez-vous à l’instance via SSH.
Méthode 3 : exécuter la procédure d’automatisation AWSSupport-TroubleshootSSH
AWSSupport-TroubleshootSSH installe l’outil Amazon EC2Rescue. Après l’installation, l’outil recherche et corrige certains problèmes à l’origine d’erreurs de connexion à distance lors de la connexion à une machine Linux via le protocole SSH. Pour en savoir plus, consultez la section Comment puis-je utiliser le flux de travail d’automatisation AWSSupport-TroubleshootSSH pour résoudre les problèmes de connexion SSH ?
Méthode 4 : utiliser un script de données utilisateur pour réparer les autorisations SSH et ajouter la clé publique SSH correcte au fichier authorized_keys
Important
- Si votre instance est sauvegardée par un stockage d’instance ou si ses volumes de stockage d’instance contiennent des données, celles-ci sont perdues lorsque vous arrêtez l’instance. Pour en savoir plus, consultez la section Déterminer le type de périphérique racine de votre instance.
- Si votre instance fait partie d’un groupe Amazon EC2 Auto Scaling, l’arrêt de l’instance peut mettre fin à l’instance. Les instances que vous lancez avec Amazon EMR, AWS CloudFormation ou AWS Elastic Beanstalk peuvent faire partie d’un groupe AWS Auto Scaling. Dans ce scénario, la mise hors service d’une instance dépend des paramètres de protection évolutive de l’instance de votre groupe Auto Scaling. Si votre instance fait partie d’un groupe Auto Scaling, supprimez-la temporairement du groupe Auto Scaling avant de commencer les étapes de résolution.
- L’arrêt et le démarrage de l’instance modifient son adresse IP publique. Il est donc recommandé d’utiliser une adresse IP Elastic au lieu d’une adresse IP publique pour l’acheminement du trafic externe vers votre instance.
1. Ouvrez la console Amazon EC2.
2. Sélectionnez Instances dans le volet de navigation, puis sélectionnez l’instance que vous essayez de lancer.
4. Sélectionnez Actions, Paramètres de l’instance, Modifier les données utilisateur.
5. Copiez le script de données utilisateur suivant dans la boîte de dialogue Modifier les données utilisateur, puis sélectionnez Enregistrer.
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=@@@@@@ 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 la valeur de OS_USER par le nom d’utilisateur associé à l’AMI à partir de laquelle vous avez lancé votre instance. Pour en savoir plus, consultez la section Obtenir le nom d’utilisateur par défaut pour l’AMI que vous avez utilisée pour lancer votre instance dans Causes fréquentes des problèmes de connexion.
6. Sur votre ordinateur local, vérifiez la clé publique SSH.
7. Si la signature de la clé publique SSH n’est pas présente dans les résultats, ajoutez la clé adéquate au script de données utilisateur que vous avez créé à l’étape 5. Si la signature correspond, vous pouvez ignorer cette étape. Ajoutez la clé publique SSH au script de données utilisateur comme illustré dans l’exemple suivant. Remplacez l’exemple de clé par votre 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=@@@@@@ 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 : remplacez la valeur de OS_USER par le nom d’utilisateur associé à l’AMI à partir de laquelle vous avez lancé votre instance. Pour en savoir plus, consultez la section Obtenir le nom d’utilisateur par défaut pour l’AMI que vous avez utilisée pour lancer votre instance dans Causes fréquentes des problèmes de connexion.
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.
Pour supprimer les données utilisateur, procédez comme suit :
- Effectuez les étapes 1 à 4 de cette section.
- Supprimez le script de données utilisateur dans la boîte de dialogue Modifier les données utilisateur.
Informations connexes
J’ai perdu ma clé privée. Comment puis-je me connecter à mon instance Linux ?
Vidéos associées
Contenus pertinents
- demandé il y a un anlg...
- demandé il y a un anlg...
- demandé il y a 8 moislg...
- demandé il y a un anlg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a 4 mois
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans