Wie kann ich eine Verbindung zu meiner Amazon-EC2-Instance herstellen, wenn ich nach dem ersten Start mein SSH-Schlüsselpaar verloren habe?

Lesedauer: 5 Minute
0

Ich möchte eine Verbindung zu meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance herstellen, habe aber das SSH-Schlüsselpaar verloren.

Behebung

Wichtig:

Die Methode 1, 2 und 3 erfordern einen Stopp und Start der Instance. Beachten Sie Folgendes:

  • Wenn sich Ihre Instance auf einen Instance-Speicher stützt oder Speicher-Volumes nutzt, die Daten enthalten, gehen die Daten beim Stoppen der Instance verloren. Weitere Informationen finden Sie unter Den Root-Gerätetyp Ihrer Instance bestimmen. Sichern Sie alle Daten auf dem Instance-Speicher-Volume, die Sie behalten möchten.
  • Durch das Stoppen und Neustarten der Instance wird die öffentliche IP-Adresse Ihrer Instance geändert. Es empfiehlt sich, beim Weiterleiten von externem Datenverkehr an Ihre Instance eine Elastic-IP-Adresse anstelle einer öffentlichen IP-Adresse zu verwenden.

Methode 1: Geben Sie die Benutzerdaten ein

1.Erstellen Sie ein neues Schlüsselpaar.

2.Wenn Sie den privaten Schlüssel in der Amazon-EC2-Konsole erstellen, rufen Sie den öffentlichen Schlüssel für das Schlüsselpaar ab.

3.Öffnen Sie die Amazon-EC2-Konsole.

4.Stoppen Sie Ihre Instance.

5.Wählen Sie Aktionen, Instance-Einstellungen und Benutzerdaten bearbeiten.

6.Kopieren Sie das folgende Skript in das Dialogfeld Benutzerdaten bearbeiten:

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:
- [users-groups, once]
users:
  - name: username
    ssh-authorized-keys:
    - PublicKeypair

Ersetzen Sie Benutzernamen durch Ihren Benutzernamen, z. B. ec2-user. Sie können den Standardbenutzernamen oder einen selbstgewählten Benutzernamen eingeben, falls ein solcher zuvor für die Instance eingerichtet wurde. Eine Liste der Standardbenutzernamen finden Sie unter Informationen zu Ihrer Instance abrufen.

Ersetzen Sie PublicKeypair durch den in Schritt 2 abgerufenen öffentlichen Schlüssel. Geben Sie den gesamten öffentlichen Schlüssel ein, beginnend mit ssh-rsa.

7.Wählen Sie Speichern aus.

8.Starten Sie Ihre Instance.

9.Nachdem die cloud-init-Phase abgeschlossen ist, überprüfen Sie, ob der öffentliche Schlüssel ersetzt wurde.

**Wichtig:**Da das Skript ein Schlüsselpaar enthält, entfernen Sie es aus dem Feld Benutzerdaten.

10.Stoppen Sie Ihre Instance.

11.Wählen Sie Aktionen, Instance-Einstellungen und Benutzerdaten bearbeiten.

12.Löschen Sie den gesamten Text im Dialogfeld Benutzerdaten bearbeiten und wählen Sie dann Speichern aus.

13.Starten Sie Ihre Instance.

Methode 2: Verwenden Sie den AWS Systems Manager

Wenn es sich bei Ihrer Instance um eine verwaltete Instance in AWS Systems Manager handelt, verwenden Sie das Dokument AWSSupport-ResetAccess, um Ihr verlorenes Schlüsselpaar wiederherzustellen. AWSSupportResetAccess generiert anhand des Tools EC2 Rescue für Linux automatisch ein neues SSH-Schlüsselpaar (öffentlich/privat) und fügt es auf der angegebenen EC2-Instance hinzu.

Der neue private SSH-Schlüssel für Ihre Instance wird verschlüsselt und im Parameter Store gespeichert, einer Funktion vom AWS Systems Manager. Der Parametername ist /ec2rl/openssh/instance_id/key.

Verwenden Sie folgenden Befehl, um den privaten SSH-Schlüssel aus dem Parameter Store abzurufen:

$ aws ssm get-parameters --names "/ec2rl/openssh/instance_id/key" --with-decryption --output json --query  "Parameters[0].Value" | sed 's:\\n:\n:g; s:^"::; s:"$::' >  key-pair-name

**Hinweis:**Ersetzen Sie instance_id durch Ihre Instance-ID und key-pair-name durch den Namen Ihres Schlüsselpaars.

Erstellen Sie dann eine neue .pem-Datei mit dem Wert dieses Parameters als Inhalt und verwenden Sie sie, um eine Verbindung zu Ihrer nicht erreichbaren Instance herzustellen. Verwenden Sie folgenden Befehl, um den privaten Schlüssel in eine .pem-Datei zu konvertieren:

$ ssh-keygen -f key-pair-name -e -m pem > key-pair-name.pem

**Hinweis:**Ersetzen Sie key-pair-name durch den Namen Ihres Schlüsselpaars.

Der Automatisierungsworkflow erstellt ein passwortgeschütztes Amazon Machine Image (AMI) als Backup. Das neue AMI wird nicht automatisch gelöscht und verbleibt in Ihrem Konto.

Um diese AMIs zu finden:

1.Öffnen Sie die Amazon-EC2-Konsole und wählen Sie dann AMIs aus.

2.Geben Sie die ID der Automatisierungsausführung in das Suchfeld ein.

Methode 3: Verwenden von Amazon EC2 Instance Connect

Wenn Ihre Instance Amazon Linux 2 2.0.20190618 oder eine neuere Version ist, inkl. Linux 2023, können Sie EC2 Instance Connect verwenden, um eine Verbindung zur Instance herzustellen.

Methode 4: Verwenden der seriellen EC2-Konsole

Wenn Sie die serielle EC2-Konsole für Linux aktiviert haben, können Sie damit Probleme mit unterstützten Nitro-basierten Instance-Typen beheben. Die serielle Konsole hilft Ihnen bei der Behebung von Problemen bei Startvorgängen, Netzwerkkonfigurationen und SSH-Konfigurationen. Die serielle Konsole stellt eine Verbindung zu Ihrer Instance her, ohne dass eine funktionierende Netzwerkverbindung benötigt wird. Sie können die Amazon-EC2-Konsole oder AWS Command Line Interface (AWS CLI) verwenden, um auf die serielle Konsole zuzugreifen.

Bevor Sie die serielle Konsole verwenden, gewähren Sie auf Kontoebene Zugriff darauf. Erstellen Sie dann Richtlinien für AWS Identitäts- und Zugriffsmanagement (Identity and Access Management) (IAM), die Ihren IAM-Benutzern Zugriff gewähren. Außerdem muss jede Instance, die die serielle Konsole verwendet, mindestens einen passwortbasierten Benutzer aufweisen. Wenn Ihre Instance nicht erreichbar ist und Sie keinen Zugriff auf die serielle Konsole konfiguriert haben, folgen Sie den Anweisungen zu Methode 1, 2 oder 3. Informationen zur Konfiguration der seriellen EC2-Konsole für Linux finden Sie unter Konfigurieren des Zugriffs auf die serielle EC2-Konsole.

**Hinweis:**Wenn beim Ausführen von Befehlen über AWS CLI Fehler auftreten, stellen Sie sicher, dass Sie die neueste Version von AWS CLI verwenden.

Ähnliche Informationen

Ausführen von Befehlen auf Ihrer Linux-Instance beim Start

AWS Systems Manager Automation

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr