Tutorial: Zugriff auf eine EC2-Instanz nach Verlust des Key Pairs

Melden

Hier ist ein ausführliches Tutorial, wie du wieder Zugriff auf deine AWS EC2-Instanz bekommst, wenn du deinen SSH-Schlüssel (.pem oder .ppk Datei) verloren hast.


Der Verlust eines Key Pairs ist ein häufiges Problem, aber kein Grund zur Panik. Da AWS die privaten Schlüssel nicht speichert, kannst du den alten Schlüssel nicht wiederherstellen. Du kannst jedoch den Zugriff über verschiedene Methoden zurückerlangen.

Hier sind die vier gängigsten Methoden, sortiert von "einfach" bis "fortgeschritten".


Methode 1: AWS Systems Manager (SSM) – Der einfachste Weg

Diese Methode funktioniert, wenn auf deiner Instanz der SSM-Agent installiert ist (standardmäßig bei Amazon Linux 2/2023 und vielen Ubuntu-AMIs) und die Instanz eine passende IAM-Rolle hat.

  1. Gehe zur EC2-Konsole.
  2. Wähle die betreffende Instanz aus.
  3. Klicke oben rechts auf "Connect" (Verbinden).
  4. Wähle den Reiter "Session Manager".
  5. Klicke auf "Connect". Wenn die Schaltfläche ausgegraut ist, ist SSM nicht konfiguriert (probiere Methode 2).
  6. Du bist nun direkt im Terminal. Du kannst nun einen neuen Benutzer anlegen oder einen neuen Public Key in die Datei ~/.ssh/authorized_keys kopieren.

Methode 2: EC2 Instance Connect (Browser-basiert)

Dies funktioniert bei neueren Instanzen (z. B. Amazon Linux 2 oder Ubuntu 20.04+), sofern der Port 22 (SSH) in der Security Group für AWS-IP-Bereiche offen ist.

  1. Wähle die Instanz in der EC2-Konsole aus.
  2. Klicke auf "Connect".
  3. Wähle den Reiter "EC2 Instance Connect".
  4. Stelle sicher, dass der Benutzername korrekt ist (z. B. ec2-user oder ubuntu).
  5. Klicke auf "Connect". Es öffnet sich ein Terminal im Browser.
  6. Wichtig: Sobald du drin bist, erstelle ein neues Key Pair auf deinem lokalen PC, kopiere den Public Key und füge ihn auf der Instanz in die Datei ~/.ssh/authorized_keys ein, um dauerhaften Zugriff per SSH-Client zu haben.

Methode 3: Über "User Data" (Instanz-Skript)

Wenn die oben genannten Methoden nicht funktionieren, kannst du beim Starten der Instanz ein Skript ausführen lassen, das einen neuen öffentlichen Schlüssel hinzufügt.

  1. Erstelle ein neues Key Pair auf deinem lokalen Rechner (z.B. mit ssh-keygen oder PuTTYgen) und kopiere den Public Key.
  2. Halte die betroffene EC2-Instanz an (Stop Instance).
  3. Wähle die Instanz aus -> Actions -> Instance Settings -> Edit User Data.
  4. Füge folgendes Skript ein (ersetze DEIN_PUBLIC_KEY mit deinem neuen öffentlichen Schlüssel):
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"

#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-User deines Betriebssystems, z.B. ubuntu oder admin).

  1. Speichere die Änderungen und starte die Instanz.
  2. Logge dich mit deinem neuen privaten Schlüssel ein.
  3. Wichtig: Stoppe die Instanz danach erneut und lösche das User Data Skript, damit der Schlüssel nicht bei jedem Neustart überschrieben wird.

Methode 4: Das "Root-Volume-Swap" (Die Rettungsmethode)

Wenn nichts anderes geht, musst du die Festplatte (Volume) an eine andere Instanz hängen.

  1. Stoppe die Instanz A (die ohne Zugriff).
  2. Gehe zu Elastic Block Store -> Volumes und suche das Root-Volume von Instanz A. Notiere dir den Mount-Point (meist /dev/xvda oder /dev/sda1).
  3. Trenne das Volume (Detach Volume).
  4. Verbinde das Volume mit einer funktionierenden Instanz B (in der gleichen Availability Zone!), auf die du Zugriff hast (Attach Volume).
  5. Logge dich in Instanz B ein und mounte das Volume:
    • lsblk (um das neue Device zu finden, z.B. /dev/xvdf1)
    • sudo mount /dev/xvdf1 /mnt
  6. Navigiere zu /mnt/home/ec2-user/.ssh/ und öffne die Datei authorized_keys.
  7. Ersetze den alten Public Key durch deinen neuen.
  8. Unmounte das Volume: sudo umount /mnt.
  9. Trenne das Volume von Instanz B und hänge es wieder an Instanz A an (mit dem ursprünglichen Mount-Point aus Schritt 2).
  10. Starte Instanz A. Du hast wieder Zugriff!

Fazit & Prävention

Um diesen Stress in Zukunft zu vermeiden:

  • AWS Systems Manager immer aktivieren (IAM Role AmazonSSMManagedInstanceCore zuweisen).
  • Schlüsselpaare sicher in einem Passwort-Manager speichern.
  • Erwäge die Nutzung von IAM Identity Center für den SSH-Zugriff anstelle von statischen Keys.
0