Pourquoi le message d'erreur « Server refused our key » s'affiche-t-il lorsque j'essaie de me connecter à mon instance EC2 via SSH ?

Lecture de 7 minute(s)
0

Le message d'erreur « Server refused our key » s'affiche lorsque je me connecte à mon instance Amazon Elastic Compute Cloud (Amazon EC2) via SSH.

Brève description

Un serveur SSH (sshd) refuse une clé SSH privée pour plusieurs raisons. Voici quelques raisons courantes pour lesquelles vous recevez cette erreur :

Résolution

Vous utilisez un nom d'utilisateur incorrect pour votre AMI lorsque vous essayez de vous connecter à votre instance Amazon EC2

Les noms d’utilisateur habituels sont ec2-user, ubuntu, centos, root ou admin. 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.

L'utilisateur a été supprimé du serveur ou le compte AWS a été verrouillé

Si l’utilisateur qui tente d’accéder à l’instance est supprimé du serveur, ajoutez-le en tant que nouvel utilisateur. Pour plus d’informations, consultez la section Comment puis-je ajouter de nouveaux comptes utilisateurs avec un accès SSH à mon instance Linux Amazon EC2 ?

Des problèmes d’autorisations sont survenus sur l’instance ou un répertoire est manquant

Il existe quatre méthodes pour vérifier les autorisations et les répertoires sur l’instance :

Méthode 1 : Utiliser EC2 Serial Console

Si vous avez activé EC2 Serial Console Amazon pour Linux, vous pouvez utiliser la console série pour résoudre les problèmes liés aux types d’instances Nitro pris en charge. Vous pouvez accéder à la console série à partir de la console Amazon EC2 ou de l'interface de la ligne de commande AWS (AWS CLI). Pour plus d’informations, consultez la section Configurer l'accès à EC2 Serial Console.

Méthode 2 : Utiliser le gestionnaire de session d’AWS Systems Manager pour vous connecter à l’instance et vérifier les autorisations

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 stat pour vous assurer que les autorisations des fichiers situés dans le répertoire de base sont correctes. Voici une liste d’exemples d’autorisations correctes :
    Répertoire de base Linux, /home, (0755/drwxr-xr-x).
    Répertoire de base de l'utilisateur, /home/ec2-user/, (0700/drwx------).
    Autorisation sur le répertoire .ssh, /home/ec2-user/.ssh, (0700/drwx------).
    Autorisation sur le fichier authorized_keys, /home/ec2-user/.ssh/authorized_keys, (0600/-rw-------).
    Voici un exemple de la commande stat et de la sortie. Dans cet exemple, ec2-user est le nom d’utilisateur. Remplacez le nom d'utilisateur par votre AMI spécifique :

    $ stat /home/ec2-user/  File: '/home/ec2-user/'
      Size: 4096          Blocks: 8          IO Block: 4096   directory
    Device: 10301h/66305d    Inode: 18322       Links: 3
    Access: (0700/drwx------)  Uid: (  500/ec2-user)   Gid: (  500/ec2-user)
  4. Si les autorisations ne correspondent pas aux valeurs précédentes, exécutez les commandes suivantes :

    $ 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
  5. Mettez fin à la session.

  6. Connectez-vous via SSH à votre instance.

Méthode 3 : Pour corriger automatiquement les problèmes à l'origine de l'erreur, exécutez le document AWSSupport-TroubleshootSSH

Le document d’automatisation AWSSupport-TroubleshootSSH installe l'outil Amazon EC2Rescue sur l'instance. Le document d'automatisation recherche et corrige ensuite les problèmes à l’origine des erreurs de connexion à distance lors de la connexion d'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 ?

Méthode 4 : Utiliser les données utilisateur pour corriger les autorisations sur l’instance

Important :

  • Cette procédure de restauration nécessite que vous arrêtiez puis redémarriez votre instance. Dans ce cas, les données des volumes de stockage d’instance se perdent. Pour plus d'informations, consultez la section Volumes racine pour vos instances Amazon EC2.
  • Si votre instance fait partie d’un groupe Amazon EC2 Auto Scaling, elle peut se terminer lorsqu’elle est arrêtée. Cela peut également se produire sur des instances lancées par des services qui utilisent AWS Auto Scaling, tels qu’Amazon EMR, AWS CloudFormation ou AWS Elastic Beanstalk. Dans ce scénario, la terminaison 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 de ce groupe avant de commencer les procédures de résolution. Vous pouvez ajouter l'instance au groupe Auto Scaling après avoir terminé les étapes de résolution.
  • Un arrêt et un redémarrage de l’instance entraîne la modification de l’adresse IP publique de votre instance. 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.
  • Vous ne pouvez pas modifier la clé SSH avec des données utilisateur si le périphérique racine de votre instance est un volume de stockage d’instance. Pour plus d'informations, consultez la section Volumes racine pour vos instances Amazon EC2.
  • La mise à jour des données utilisateur de votre instance s’applique à toutes les distributions qui prennent en charge les directives cloud-init. Cloud-init doit être installé et configuré. Pour plus d'informations, consultez la page SSH - Configuration de SSH et des clés SSH sur le site Web de Cloud-init.

Procédez comme suit :

  1. Ouvrez la console Amazon EC2, puis sélectionnez votre instance.

  2. Sélectionnez État de l’instance, puis Arrêter l’instance.
    Remarque : Si Arrêt n’est pas disponible, soit l’instance est déjà arrêtée, soit son périphérique racine est un volume de stockage d’instance.

  3. Sélectionnez Actions, Paramètres de l’instance, puis Modifier les données utilisateur.

  4. Copiez la commande suivante dans le champ Données utilisateur, puis sélectionnez Enregistrer. Veillez à copier l’intégralité de la commande et à ne pas ajouter d’espaces supplémentaires.
    Remarque : La commande suivante utilise le nom d'utilisateur ec2-user. Remplacez ec2-user par le nom d’utilisateur de votre AMI.

    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
    chown root:root /home
    chmod 755 /home
    chown ec2-user:ec2-user /home/ec2-user -R
    chmod 700 /home/ec2-user /home/ec2-user/.ssh
    chmod 600 /home/ec2-user/.ssh/authorized_keys
    --//
  5. Démarrez l'instance, puis connectez-vous à l'instance via SSH.
    Remarque : Par défaut, la commande user data s'exécute une fois par instance. Cette procédure modifie le comportement par défaut pour ajouter la clé publique à chaque redémarrage, arrêt ou démarrage de l’instance. Pour rétablir le comportement par défaut, supprimez les données utilisateur personnalisées. Il est recommandé de suivre les protocoles de sécurité et d'autoriser l'exécution des données utilisateur après le premier démarrage d'une instance. Modifiez les données utilisateur d’une instance à l’aide de la méthode d’API ModifyInstanceAttribute. Pour restreindre l’accès à cette méthode, utilisez les stratégies IAM.

Informations connexes

Se connecter à votre instance Linux via PuTTY.

Paires de clés Amazon EC2 et instances Amazon EC2

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

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 6 mois