Tutorial: Zugriff auf eine EC2-Instanz nach Verlust des Key Pairs
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.
- Gehe zur EC2-Konsole.
- Wähle die betreffende Instanz aus.
- Klicke oben rechts auf "Connect" (Verbinden).
- Wähle den Reiter "Session Manager".
- Klicke auf "Connect". Wenn die Schaltfläche ausgegraut ist, ist SSM nicht konfiguriert (probiere Methode 2).
- Du bist nun direkt im Terminal. Du kannst nun einen neuen Benutzer anlegen oder einen neuen Public Key in die Datei
~/.ssh/authorized_keyskopieren.
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.
- Wähle die Instanz in der EC2-Konsole aus.
- Klicke auf "Connect".
- Wähle den Reiter "EC2 Instance Connect".
- Stelle sicher, dass der Benutzername korrekt ist (z. B.
ec2-useroderubuntu). - Klicke auf "Connect". Es öffnet sich ein Terminal im Browser.
- 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_keysein, 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.
- Erstelle ein neues Key Pair auf deinem lokalen Rechner (z.B. mit
ssh-keygenoder PuTTYgen) und kopiere den Public Key. - Halte die betroffene EC2-Instanz an (Stop Instance).
- Wähle die Instanz aus -> Actions -> Instance Settings -> Edit User Data.
- Füge folgendes Skript ein (ersetze
DEIN_PUBLIC_KEYmit 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).
- Speichere die Änderungen und starte die Instanz.
- Logge dich mit deinem neuen privaten Schlüssel ein.
- 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.
- Stoppe die Instanz A (die ohne Zugriff).
- Gehe zu Elastic Block Store -> Volumes und suche das Root-Volume von Instanz A. Notiere dir den Mount-Point (meist
/dev/xvdaoder/dev/sda1). - Trenne das Volume (Detach Volume).
- Verbinde das Volume mit einer funktionierenden Instanz B (in der gleichen Availability Zone!), auf die du Zugriff hast (Attach Volume).
- 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
- Navigiere zu
/mnt/home/ec2-user/.ssh/und öffne die Dateiauthorized_keys. - Ersetze den alten Public Key durch deinen neuen.
- Unmounte das Volume:
sudo umount /mnt. - Trenne das Volume von Instanz B und hänge es wieder an Instanz A an (mit dem ursprünglichen Mount-Point aus Schritt 2).
- Starte Instanz A. Du hast wieder Zugriff!
Fazit & Prävention
Um diesen Stress in Zukunft zu vermeiden:
- AWS Systems Manager immer aktivieren (IAM Role
AmazonSSMManagedInstanceCorezuweisen). - 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.