Direkt zum Inhalt

Warum erhalte ich die Fehlermeldung „Server refused our key“, wenn ich versuche, über SSH eine Verbindung zu meiner EC2-Instance herzustellen?

Lesedauer: 6 Minute
0

Ich erhalte die Fehlermeldung „Server refused our key“, wenn ich über SSH eine Verbindung zu meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance herstelle.

Lösung

Der SSH-Server (sshd) kann einen privaten SSH-Schlüssel aus einem der folgenden Gründe ablehnen:

Möglicherweise erhältst du auch die FehlermeldungServer refused our key, wenn die Instance Probleme mit den Berechtigungen hat oder ein Verzeichnis fehlt. Verwende eine der folgenden Methoden, um deine Instance-Berechtigungen und Verzeichnisse zu überprüfen.

Verwendung der seriellen EC2-Konsole

Wenn du die serielle EC2-Konsole für Linux aktiviert hast, kannst du die serielle Konsole verwenden, um Fehler bei unterstützten Nitro-basierten Instance-Typen zu beheben.

Verwendung von Systems Manager, um dich bei der Instance anzumelden und die Berechtigungen zu überprüfen

Voraussetzung: Installiere den AWS Systems Manager Agent (SSM Agent). Stelle außerdem sicher, dass die Konfiguration die Voraussetzungen für Session Manager erfüllt, eine Funktion von AWS Systems Manager.

Gehe wie folgt vor, um mit Session Manager Fehler in der Instance zu beheben:

  1. Öffne die Systems Manager-Konsole.

  2. Starte eine Sitzung.

  3. Um sicherzustellen, dass die Dateien im home (Stamm)-Verzeichnis die richtigen Berechtigungen haben, führe den folgenden Befehl aus:

    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)     

    Hinweis: Ersetze ec2-user durch den richtigen Benutzernamen für das AMI.
    Überprüfe in der Ausgabe den Zugriff, um sicherzustellen, dass die Konfiguration die folgenden Berechtigungen verwendet:
    Das Linux-Stammverzeichnis /home muss über die Berechtigungen 0755/drwxr-xr-x verfügen.
    Das Stammverzeichnis des Benutzers /home/ec2-user/ muss über die Berechtigungen 0700/drwx------ verfügen.
    Die .ssh-Verzeichnisberechtigung**/home/ec2-user/.ssh** muss über die Berechtigungen 0700/drwx------ verfügen.
    Die authorized_keys-Dateiberechtigung /home/ec2-user/.ssh/authorized_keys muss über die Berechtigungen 0600/-rw------- verfügen.
    Beispielausgabe:

    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. Führe die folgenden Befehle aus, um die Berechtigungen der Konfiguration zu aktualisieren:

    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

    Hinweis: Ersetze ec2-user durch den richtigen Benutzernamen für das AMI.

  5. Beende die Sitzung.

  6. Verwende SSH, um eine Verbindung zu deiner Instance herzustellen.

Das AWSSupport-TroubleshootSSH-Runbook ausführen

Führe AWSSupport-TroubleshootSSH aus, um Probleme, die Fehler verursachen, automatisch zu korrigieren. Das Runbook installiert das Amazon EC2Rescue-Tool auf der Instance und identifiziert und korrigiert dann Probleme, die bei SSH zu Fernverbindungsfehlern führen. Weitere Informationen findest du unter Ich erhalte Fehler, wenn ich versuche, mit SSH eine Verbindung zu meiner EC2-Instance herzustellen. Wie kann ich den AWSSupport-TroubleshootSSH-Automatisierungsablauf verwenden, um SSH-Verbindungsprobleme zu beheben?

Verwendung von Benutzerdaten, um die Berechtigungen auf der Instance zu berichtigen

Wichtig: Bevor du die Instance stoppst und startest, gehe wie folgt vor:

Hinweis: Wenn du eine Instance stoppst und startest, ändert sich die öffentliche IP-Adresse der Instance. Es empfiehlt sich, beim Weiterleiten von externem Datenverkehr an die Instance eine Elastic-IP-Adresse anstelle einer öffentlichen IP-Adresse zu verwenden. Wenn du Amazon Route 53 verwendest, musst du möglicherweise die Route 53-DNS-Datensätze aktualisieren, wenn sich die öffentliche IP-Adresse ändert.

Gehe wie folgt vor, um Benutzerdaten zur Behebung von Berechtigungsproblemen zu verwenden:

  1. Öffne die Amazon-EC2-Konsole.

  2. Wähle im Navigationsbereich Instances und dann deine Instance aus.

  3. Wähle Instance-Status und dann Instance stoppen aus.
    Hinweis: Wenn du Instance stoppen nicht wählen kannst, ist die Instance bereits gestoppt oder ihr Stammgerät ist ein Instance-Speicher-Volume.

  4. Wähle Aktionen und dann Instance-Einstellungen aus.

  5. Wähle Benutzerdaten bearbeiten und gib dann den folgenden Befehl ein:

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

    Hinweis: Ersetze ec2-user durch den richtigen Benutzernamen für das AMI. Füge keine zusätzlichen Leerzeichen hinzu, wenn du den vorherigen Befehl eingibst.

  6. Wähle Speichern aus.

  7. Starte die Instance und verwende dann SSH, um eine Verbindung mit der Instance herzustellen.

Standardmäßig wird der Benutzerdatenbefehl für jede Instance einmal ausgeführt. Die vorherigen Schritte ändern das Standardverhalten, sodass der öffentliche Schlüssel bei jedem Reboot, Stopp oder Start der Instance hinzugefügt wird. Um das Standardverhalten wiederherzustellen, entferne die Befehle für benutzerdefinierte Benutzerdaten. Es hat sich bewährt, Benutzerdaten nach dem ersten Start der Instance ausführen zu lassen. Du kannst die API ModifyInstanceAttribute verwenden, um die Benutzerdaten einer Instance zu ändern. Verwende die AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Richtlinien, um den Zugriff auf die API ModifyInstanceAttribute einzuschränken.

Ähnliche Informationen

Mithilfe von PuTTY eine Verbindung zur Linux-Instance herstellen

Amazon EC2-Schlüsselpaare und Amazon EC2-Instances

Wie kann ich Probleme beim Herstellen einer Verbindung zu meiner Amazon-EC2-Linux-Instance über SSH beheben?

Warum erhalte ich die Fehlermeldung „Server refused our key“, wenn ich versuche, über SSH eine Verbindung zu meiner EC2-Instance herzustellen?