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 ?

Lecture de 8 minute(s)
0

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.

2.    Démarrez une session.

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

7.    Mettez fin à la session.

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.

3.    Arrêtez l’instance.

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.

8.    Démarrez votre instance.

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

Comment puis-je résoudre les problèmes de connexion à mon instance Linux Amazon EC2 à l’aide de SSH ?

J’ai perdu ma clé privée. Comment puis-je me connecter à mon instance Linux ?

Comment puis-je me connecter à mon instance Amazon EC2 si j’ai perdu ma paire de clés SSH après son lancement initial ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an