Wie man seinen SSH-Schlüssel auf einer AWS EC2-Instanz zurücksetzt
Wie man seinen SSH-Schlüssel auf einer AWS EC2-Instanz zurücksetzt
Wenn du deinen SSH-Schlüssel für eine EC2-Instanz verloren hast, keine Panik. In diesem Leitfaden führen ich dich durch den Prozess des Zurücksetzens deines SSH-Schlüssels, ohne deine Instanz zu gefährden. Wenn du diese Schritte befolgst, kannst du sicher wieder auf deine Instanz zugreifen.
Überblick
Der Prozess umfasst die Erstellung einer temporären EC2-Instanz, das Trennen des Root-Volumes von der ursprünglichen Instanz, das Mounten auf der temporären Instanz, das Aktualisieren der authorized_keys
-Datei mit einem neuen öffentlichen Schlüssel und schließlich das erneute Verbinden des Volumes mit der ursprünglichen Instanz. Bevor du beginnst, stelle sicher, dass du eine Elastic IP-Adresse mit deiner Instanz verknüpft hast, damit die IP-Adresse während des gesamten Prozesses konsistent bleibt.
Schritt-für-Schritt-Anleitung
1. Melde dich bei der AWS-Konsole an
- Navigiere zum EC2-Dienst.
- Wähle im Menü auf der linken Seite Instanzen aus.
- Identifiziere deine Instanz und klicke auf ihre Instanz-ID.
2. Bereite die Sicherung des Originalinstanz-Volumes vor
-
Erstelle ein Backup des Volumes
-
Klicke auf die Registerkarte Speicher, um die Volume-ID und den Gerätenamen anzuzeigen.
-
Erstelle einen Snapshot, indem du auf die Volume-ID klickst, Aktionen > Snapshot erstellen auswählst und eine Beschreibung eingibst. Warte, bis der Snapshot-Vorgang abgeschlossen ist.
-
Stelle Elastic IP sicher:
-
Vergewissere dich, dass deine Instanz über eine Elastic IP-Adresse verfügt. Wenn nicht, weise eine zu, um zu vermeiden, dass beim Neustart der Instanz Verbindungsdetails verloren gehen.
3. Erstelle eine temporäre Instanz für das Zurücksetzen
-
Neue Instanz starten:
-
Klicke auf Instanzen starten.
-
Gib der neuen Instanz einen Namen (z. B. „ssh-key-reset“) und stelle sicher, dass sie in derselben Verfügbarkeitszone wie die ursprüngliche Instanz gestartet wird.
-
Für das Betriebssystem und den Instanztyp können die Standardwerte verwendet werden.
-
Neues Schlüsselpaar erstellen:
-
Wenn du zur Eingabe von Schlüsselpaaroptionen aufgefordert wirst, wähle Erstelle ein neues Schlüsselpaar(z. B. „ssh-key-reset“).
-
Lade die Schlüsseldatei herunter (achte darauf, sie sicher zu speichern).
-
Hinweis für Windows-Benutzer: Verwende eine PPK-Datei mit PuTTY, während Linux- und macOS-Benutzer die PEM-Datei verwenden können.
4. Trenne das Volume von der Originalinstanz
-
Beendet die Instanz:
-
Wählt eure Originalinstanz aus und klickt auf Instanzstatus > Instanz beenden.
-
Wartet, bis der Instanzstatus zu „Beendet“ wechselt.
-
Trennt das Volume:
-
Wechselt zur Registerkarte Speicher, klickt auf die Volume-ID und wählt Aktionen > Volume trennen aus.
-
Wartet, bis der Status des Volumes zu „Verfügbar“ wechselt.
5. Verbindet das Volume mit der temporären Instanz
- Volume verbinden:
- Während das Volume noch ausgewählt ist, klicke auf „Aktionen“ > „Volume anhängen“.
- Wähle die temporäre Instanz aus, die du gerade erstellt hast.
- Lasse den Gerätenamen als Standard (oder notiere ihn dir für später).
Fehlerbehebung:
Wenn du eine Fehlermeldung erhältst, dass das Volume nicht angehängt werden kann, weil die Instanz nicht angehalten wurde, stelle sicher, dass die temporäre Instanz angehalten wurde, bevor du das Volume anhängst.
- Temporäre Instanz anhalten:
- Falls erforderlich, stoppe die temporäre Instanz und hänge das Volume dann erneut an.
- Starte die temporäre Instanz:
- Sobald das Volume angehängt ist, starte die temporäre Instanz.
6. Stelle über SSH eine Verbindung zur temporären Instanz her
-
Richte die richtigen Berechtigungen ein:
-
Öffne dein Terminal und stelle sicher, dass deine neue Schlüsseldatei über die richtigen Berechtigungen verfügt:
chmod 600 /path/to/ssh-key-reset.pem
-
SSH in die Instanz:
-
Verwende den SSH-Befehl, um eine Verbindung herzustellen:
ssh -i /path/to/ssh-key-reset.pem ec2-user@<temporary-instance-ip>
-
Akzeptiere den Schlüssel-Fingerabdruck:
-
Gib „yes“ ein, wenn du aufgefordert wirst, den Schlüssel-Fingerabdruck zu bestätigen.
7. Das getrennte Volume einbinden
- Werde Root:
- Führe den folgenden Befehl aus, um zum Root-Benutzer zu wechseln:
sudo su -
- Das Gerät identifizieren:
- Verwende
parted -l
, um verfügbare Laufwerke aufzulisten und die Partition zu finden (normalerweise etwas wie/dev/xvdf1
für ein Volumen mit einer einzelnen Partition). - Mounten des Volumes:
- Mounten des Volumes in ein temporäres Verzeichnis:
mount /dev/xvdf1 /mnt
8. Aktualisieren der Datei „Authorized Keys“
-
Suchen des Benutzerverzeichnisses:
-
Navigiere zum Home-Verzeichnis des Benutzers auf der ursprünglichen Instanz. Wenn das alte Betriebssystem beispielsweise Amazon Linux mit einem Benutzer namens
ec2-user
war, dann:cd /mnt/home/ec2-user/.ssh
-
Neues SSH-Schlüsselpaar generieren (optional):
-
Du kannst ein neues SSH-Schlüsselpaar auf der temporären Instanz generieren:
ssh-keygen -f new_ssh_key
-
Dadurch werden zwei Dateien erstellt: ein privater Schlüssel (
new_ssh_key
) und ein öffentlicher Schlüssel (new_ssh_key.pub
). -
Neuen öffentlichen Schlüssel hinzufügen:
-
Öffne die
authorized_keys
-Datei mit deinem bevorzugten Editor (z. B.vi
):vi authorized_keys
-
Füge den Inhalt von
new_ssh_key.pub
am Ende der Datei an. -
Speichern und beenden Sie den Editor (bei
vi
drücken SieEscape
, geben:wq
einund drücken die Eingabetaste).
9. Trennen und erneutes Verbinden des Volumes
-
Temporäre Instanz herunterfahren:
-
Fahren Sie die temporäre Instanz herunter, um das Volume sicher zu trennen:
shutdown -h now
-
Trennen des Volumes von der temporären Instanz:
-
Gehen Sie in der AWS-Konsole zur Registerkarte „Storage“, wählen Sie das Volume aus und wählen Sie „Actions > Detach Volume“.
-
Das Volume wieder an die Originalinstanz anhängen:
-
Das Volume mit dem ursprünglichen Gerätenamen (z. B.
/dev/sda1
) wieder an die Originalinstanz anhängen.
10. Die Originalinstanz neu starten und die Verbindung testen
-
Die Originalinstanz starten:
-
In der AWS-Konsole die Originalinstanz auswählen und auf Instance State > Start Instance klicken.
-
SSH in die Originalinstanz:
-
Stelle mithilfe deines neu hinzugefügten SSH-Schlüssels eine Verbindung zu deiner ursprünglichen Instanz her:
ssh -i /path/to/new_private_key.pem ec2-user@<elastic-ip-address>
-
Zugriff überprüfen:
-
Nach der Anmeldung solltest du mit deinem neuen SSH-Schlüssel vollen Zugriff haben.
11. Temporäre Ressourcen bereinigen
- Temporäre Instanz beenden:
- Wähle in der AWS-Konsole die temporäre Instanz aus, klicke auf „Instance State“ > „Terminate Instance“ und bestätige die Aktion.
Fazit
Das Zurücksetzen deines SSH-Schlüssels auf einer AWS EC2-Instanz mag zunächst abschreckend wirken, aber wenn du die oben genannten Schritte sorgfältig befolgst, kannst du den Zugriff sicher wiederherstellen, ohne Datenverluste zu riskieren. Denke immer daran, einen Snapshot deines Volumes zu erstellen, bevor du Änderungen vornimmst, und stelle sicher, dass du innerhalb derselben Verfügbarkeitszone arbeitest, um Komplikationen zu vermeiden.
Viel Spaß beim Cloud Computing!