Passer au contenu

Pourquoi le message d'erreur « Le serveur a refusé notre clé » 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 « Le serveur a refusé notre clé » s'affiche lorsque je me connecte à mon instance Amazon Elastic Compute Cloud (Amazon EC2) via SSH.

Résolution

Le serveur SSH (sshd) peut refuser une clé SSH privée pour l'une des raisons suivantes :

Vous pouvez également recevoir le message d'erreur Le serveur a refusé notre clé si votre instance rencontre des problèmes d'autorisations ou si un répertoire est manquant dans cette dernière. Pour vérifier les autorisations et les répertoires de votre instance, appliquez l'une des méthodes suivantes.

Utiliser l’EC2 Serial Console

Si vous avez activé l’EC2 Serial Console 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.

Utilisez Systems Manager pour vous connecter à l'instance et vérifier les autorisations

Prérequis : Installez AWS Systems Manager Agent (SSM Agent). Assurez-vous également que votre configuration est conforme aux prérequis pour Session Manager, une fonctionnalité d'AWS Systems Manager.

Pour utiliser Session Manager afin de dépanner votre instance, procédez comme suit :

  1. Ouvrez la console Systems Manager.

  2. Démarrez une session.

  3. Pour vous assurer que les fichiers du répertoire personnel disposent des autorisations appropriées, exécutez la commande suivante :

    stat /home/ec2-user/  
    ls -ld /home               # Should show drwxr-xr-x (755)
    ls -ld /home/ec2-user      # Should show drwx------ (700)
    ls -ld /home/ec2-user/.ssh # Should show drwx------ (700)
    ls -l /home/ec2-user/.ssh/authorized_keys # Should show -rw------- (600)     

    Remarque : Remplacez ec2-user par le nom d'utilisateur correct pour votre AMI.
    Dans la sortie, vérifiez l'accès pour vous assurer que votre configuration utilise les autorisations suivantes :
    Le répertoire personnel Linux /home Linux doit disposer des autorisations 0755/drwxr-xr-x.
    Le répertoire personnel de l'utilisateur /home/ec2-user/ doit disposer des autorisations 0700/drwx------.
    L'autorisation de répertoire .ssh /home/ec2-user/.ssh doit disposer des autorisations 0700/drwx------.
    L'autorisation de fichier authorized_keys /home/ec2-user/.ssh/authorized_keys doit disposer des autorisations 0600/-rw-------.
    Exemple de sortie :

    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. Pour mettre à jour les autorisations de votre configuration, 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

    **Remarque :**Remplacez ** ec2-user ** par le nom d'utilisateur correct pour votre AMI.

  5. Mettez fin à la session.

  6. Utilisez le protocole SSH pour vous connecter à l’instance.

Exécuter le dossier d’exploitation AWSSupport-TroubleshootSSH

Pour résoudre automatiquement les problèmes à l'origine des erreurs, exécutez AWSSupport-TroubleshootSSH. Le dossier d'exploitation installe l'outil Amazon EC2Rescue sur l'instance, puis identifie et résout les problèmes qui provoquent des erreurs de connexion à distance lors du protocole 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 ?

Utiliser les données utilisateur pour corriger les autorisations sur l’instance

Important : Avant d'arrêter et de démarrer votre instance, effectuez les actions suivantes :

Remarque : Lorsque vous arrêtez et démarrez une instance, son adresse IP publique change. Une bonne pratique consiste à utiliser une adresse IP Elastic pour acheminer le trafic externe vers votre instance au lieu d'une adresse IP publique. Si vous utilisez Amazon Route 53, vous devrez peut-être mettre à jour les enregistrements DNS Route 53 lorsque l'adresse IP publique change.

Pour utiliser les données utilisateur afin de résoudre les problèmes liés aux autorisations, procédez comme suit :

  1. Ouvrez la console Amazon EC2.

  2. Dans le volet de navigation, sélectionnez Instances, puis votre instance.

  3. Sélectionnez État de l’instance, puis Arrêter l’instance.
    Remarque : Si vous ne pouvez pas sélectionner Arrêter l’instance, cela signifie que l'instance est déjà arrêtée ou que son périphérique racine est un volume de stockage d'instances.

  4. Sélectionnez Actions, puis Paramètres de l’instance.

  5. Sélectionnez Modifier les données utilisateur, puis entrez la commande suivante :

    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
    --//

    Remarque : Remplacez ec2-user par le nom d'utilisateur correspondant à votre AMI. N'ajoutez pas d'espaces supplémentaires lorsque vous entrez la commande précédente.

  6. Sélectionnez Enregistrer.

  7. Démarrez l'instance, puis connectez-vous à l'instance via SSH.

Par défaut, la commande user data s'exécute une fois pour chaque instance. Les étapes précédentes modifient 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 commandes de données utilisateur personnalisées. Il est recommandé d'autoriser l'exécution des données utilisateur après le premier démarrage de l'instance. Vous pouvez utiliser l'API ModifyInstanceAttribute pour modifier les données utilisateur d'une instance. Pour restreindre l'accès à l'API ModifyInstanceAttribute, utilisez les politiques de gestion des identités et des accès AWS (AWS 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 ?

Pourquoi le message d'erreur « Server refused our key » (Le serveur a refusé notre clé) s'affiche-t-il lorsque j'essaie de me connecter à mon instance EC2 via SSH ?