Zugriff auf EC2-Instanz wiederherstellen nach Verlust des Keypairs (.pem)

Melden

Hier ist ein ausführliches Tutorial, wie du wieder Zugriff auf deine AWS EC2-Instanz erhältst, wenn du deine private Schlüsseldatei (.pem) verloren hast.

Wenn du deine .pem-Datei verlierst, gibt es bei AWS keine Möglichkeit, genau diese Datei erneut herunterzuladen. Du kannst jedoch den hinterlegten öffentlichen Schlüssel auf der Instanz austauschen. Hier sind die drei effektivsten Methoden.


Methode 1: Über den EC2 Instance Connect (Der einfachste Weg)

Diese Methode funktioniert, wenn deine Instanz ein unterstütztes Betriebssystem (z. B. Amazon Linux 2 oder Ubuntu) nutzt und eine öffentliche IP-Adresse hat.

  1. Logge dich in die AWS Management Console ein.
  2. Gehe zu EC2 > Instances.
  3. Wähle die betroffene Instanz aus und klicke oben auf Connect (Verbinden).
  4. Wähle den Reiter EC2 Instance Connect.
  5. Klicke auf Connect. Es öffnet sich ein Terminal direkt im Browser.
  6. Neuen Key hinzufügen:
    • Erstelle auf deinem lokalen Computer ein neues Schlüsselpaar: ssh-keygen -t rsa -f mein-neuer-key.
    • Kopiere den Inhalt der Datei mein-neuer-key.pub.
    • Im Browser-Terminal der EC2-Instanz gibst du ein: nano ~/.ssh/authorized_keys.
    • Füge den neuen öffentlichen Schlüssel in eine neue Zeile ein und speichere (Strg+O, Enter, Strg+X).
  7. Du kannst dich nun von deinem lokalen Rechner mit dem neuen Key einloggen: ssh -i mein-neuer-key ec2-user@deine-instanz-ip

Methode 2: Über ein User Data Script (Schnellster Weg ohne SSH-Zugriff)

Wenn du keinen Browser-Zugriff hast, kannst du den Schlüssel beim Starten der Instanz über ein Skript austauschen.

  1. Neues Schlüsselpaar erstellen: Erstelle lokal ein neues Paar und kopiere den Inhalt des Public Keys (.pub).
  2. Instanz stoppen: Gehe in der EC2-Konsole auf die Instanz -> Instance State -> Stop instance.
  3. User Data bearbeiten:
    • Wähle die gestoppte Instanz aus.
    • Klicke auf Actions -> Instance settings -> Edit user data.
  4. Skript einfügen: Wähle "As text" und füge folgendes Skript ein (ersetze DEIN_PUBLIC_KEY durch den Inhalt deiner .pub-Datei):
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: ec2-user
    ssh_authorized_keys:
      - DEIN_PUBLIC_KEY
--//

(Hinweis: Ersetze ec2-user durch den Standard-Benutzer deiner Distribution, z.B. ubuntu oder admin.)

  1. Speichern und Starten: Speichere die Änderungen und starte die Instanz wieder.
  2. Login: Versuche dich mit dem neuen privaten Schlüssel einzuloggen.
  3. Wichtig: Stoppe die Instanz danach erneut und lösche das User Data Skript, damit der Key nicht bei jedem Bootvorgang unnötig überschrieben wird.

Methode 3: Die EBS-Volume-Methode (Der "Rescue"-Weg)

Falls die oben genannten Methoden nicht funktionieren, kannst du das Root-Volume an eine andere Instanz hängen.

  1. Vorbereitung:
    • Stoppe die betroffene Instanz (Instanz A).
    • Erstelle eine neue, temporäre Instanz (Instanz B) in der gleichen Availability Zone, für die du ein funktionierendes Keypair hast.
  2. Volume umhängen:
    • Gehe zu Volumes, suche das Root-Volume von Instanz A.
    • Notiere dir den Mount-Point (z. B. /dev/xvda).
    • Klicke auf Detach Volume.
    • Wähle das Volume erneut aus, klicke auf Attach Volume und hänge es an Instanz B (z. B. als /dev/sdf).
  3. Key auf Volume austauschen:
    • Logge dich per SSH in Instanz B ein.
    • Mounte das Volume: sudo mount /dev/xvdf1 /mnt (Der Name kann je nach OS variieren, prüfe mit lsblk).
    • Öffne die Datei mit den Schlüsseln: nano /mnt/home/ec2-user/.ssh/authorized_keys.
    • Ersetze den alten (verlorenen) Public Key durch deinen neuen Public Key.
    • Speichere und unmointe das Volume: sudo umount /mnt.
  4. Zurückschwenken:
    • Gehe in der Konsole zu Volumes, klicke auf Detach von Instanz B.
    • Klicke auf Attach Volume und hänge es zurück an Instanz A.
    • WICHTIG: Gib als Device-Name genau den Namen an, den du dir in Schritt 2 notiert hast (z. B. /dev/xvda).
  5. Abschluss: Starte Instanz A. Du kannst dich nun mit dem neuen Keypair einloggen.

Profi-Tipp für die Zukunft:

Nutze den AWS Systems Manager (SSM) Session Manager. Wenn du die entsprechende IAM-Rolle an deine Instanzen hängst, kannst du jederzeit über die Konsole auf das Terminal zugreifen, ganz ohne SSH-Keys verwalten zu müssen.

0