Schritt-für-Schritt-Anleitung zum Wiederherstellen des Zugriffs auf Linux Amazon EC2-Instanzen beim Verlust einer PEM-Datei

Wenn während der Erstellung der Linux-Instanz in AWS kein Schlüsselpaar (KeyPair) erstellt wurde, um über SSH darauf zuzugreifen, oder diese verloren gehen, müssen eine Reihe von Vorgängen ausgeführt werden, um Zugriff auf den Computer zu erhalten. Sie können einer bereits ausgeführten Instanz über die AWS-Konsole keine Schlüssel hinzufügen. Es gibt drei Möglichkeiten, den SSH-Zugriff auf eine Instanz wiederherzustellen.

Am einfachsten ist es, den Schlüssel mithilfe des Cloud-Init-Mechanismus zu konfigurieren (danke für den Hinweis von Yusman ). Es funktioniert jedoch nicht, wenn die Rechte am Verzeichnis /home beschädigt sind oder die Distribution keine Cloud-Init-Anweisungen unterstützt.

Die zweite Möglichkeit besteht darin , ein Image (Amazon Machine Image) aus einer vorhandenen Instanz zu erstellen und anschließend eine neue darauf basierende Instanz mit einem Schlüssel zu starten. Somit wird die vorhandene Maschine tatsächlich mit dem einzigen Unterschied geklont, dass es in der letzten Phase möglich ist, neue Schlüssel zu erstellen. Das Erstellen eines Images kann für eine Instanz mit großen Festplatten lange dauern, und Sie müssen alle mit diesem Computer verbundenen Dienste neu konfigurieren. Daher dauert diese Methode in den meisten Fällen länger.

Die offiziellen Dokumente von Amazon beschreiben einen anderen Weg . Sie können den Zugriff wiederherstellen und die Kosten für die Neukonfiguration von Diensten (im Vergleich zur zweiten Methode) minimieren, die an eine Instanz gebunden sind, auf die der Zugriff verloren geht. Der Artikel enthält eine schrittweise Beschreibung.

Achtung! Diese Methode funktioniert nur für Instanzen, die den Blockspeicher (Amazon Elastic Block Store) als Root-Gerät verwenden, und nicht für den lokalen Instanzspeicher (Amazon EC2 Instance Store).

Um herauszufinden, welchen Root-Gerätetyp Sie verwenden, öffnen Sie die Amazon EC2-Konsole, gehen Sie zu Instanzen , wählen Sie eine Instanz aus und überprüfen Sie den Wert des Parameters Root-Gerätetyp im Bedienfeld mit detaillierten Informationen.

Instanz-Root-Gerätetyp

Wenn Ihre Maschine über EBS verfügt, ist diese Methode für Sie geeignet.

Schritt 1. Vorbereitung


Zuerst müssen Sie einige Informationen speichern, damit Sie nicht abgelenkt werden und nicht zu anderen Bildschirmen wechseln müssen (zumal dies sehr unpraktisch ist). Alle Daten finden Sie in den detaillierten Informationen der Instanz (Sie wissen bereits, wie Sie dorthin gelangen). Notieren Sie die folgenden Einstellungen:

  • Instanz-ID
  • AMI ID
  • EBS ID
  • Root-Gerät
  • Verfügbarkeitszone

Speichern Sie für eine in VPC ausgeführte Instanz den VPC-ID- Wert.

Für EC2-classic : Wenn für eine Instanz eine elastische IP-Adresse ( Elastic IP ) erstellt wird, muss auch deren Wert gespeichert werden.

Zu speichernde Instanzeinstellungen
Klickbares Bild

Klicken Sie auf den Namen des Root-Geräts, um die Blockspeicher- ID ( EBS-ID ) abzurufen .

EBS ID


Schritt 2. Erstellen einer temporären Instanz


Der nächste Schritt besteht darin, eine Instanz zu erstellen, mit der Sie die Schlüssel der ursprünglichen Instanz wiederherstellen. Sie können diesen Schritt überspringen, wenn sich eine andere laufende Instanz in derselben Zone (Verfügbarkeitszone) wie die wiederhergestellte befindet und gleichzeitig mit demselben AMI oder der darauf befindlichen Version des Betriebssystems erstellt wurde, sodass Sie die Festplatte von der ursprünglichen Instanz und verbinden können Kopieren Sie SSH-Schlüssel darauf. Wenn es keine solche Instanz gibt, gehen Sie folgendermaßen vor:

  • Gehen Sie zur EC2-Konsole (im Dashboard oder im Menü Instanzen ) und klicken Sie auf Instanz starten
  • Wählen Sie auf der Auswahlseite AMI ( Choose a Amazon Machine Image ) diejenige aus, mit der die ursprüngliche Instanz erstellt wurde (Sie haben sie im ersten Schritt notiert - AMI ID ). Wenn dieses AMI aus irgendeinem Grund nicht verfügbar ist, können Sie ein Image aus der ursprünglichen Instanz erstellen und verwenden oder den AMI-Typ auswählen, mit dem Sie die Root-Festplatte der wiederhergestellten Instanz verbinden können
  • Wählen Sie auf der Seite Instanztyp auswählen den günstigsten verfügbaren Typ aus.
  • Geben Sie auf der Seite Instanzdetails konfigurieren dieselbe Verfügbarkeitszone wie in unserer Instanz an. Wenn es in VPC ausgeführt wird, wählen Sie dieselbe VPC im Element Netzwerk aus und geben Sie das Subnetz in dieser Zone an.

    Verfügbarkeitszone konfigurieren

    Die Einstellungen für die Netzwerkschnittstellen müssen jedoch nicht geändert werden.
  • Auf der Seite Speicher hinzufügen sind keine Änderungen erforderlich.
  • Fügen Sie auf der Seite "Tags" ( Tags hinzufügen) einen Namen für die temporäre Instanz hinzu, damit Sie die Instanz-ID und die EBS-ID leicht identifizieren und dann keine Zeit damit verbringen können, sie abzustimmen , da auf den Seiten, auf denen Sie bestimmen müssen, mit welcher Instanz oder welchem ​​Volume Sie arbeiten, im Titel Dieser Wert wird angezeigt.

    Name auf der Seite Tags hinzufügen

  • Klicken Sie auf Überprüfen und starten und dann auf Starten
  • Der letzte Schritt besteht darin, ein vorhandenes Schlüsselpaar auszuwählen oder ein neues zu erstellen. Laden Sie die Schlüsseldatei (pem) herunter und vergessen Sie nicht, eine Sicherungskopie zu erstellen, damit nicht alle Vorgänge erneut ausgeführt werden müssen.

    KeyPair speichern
  • Starten Sie die Instanz nach dem Speichern der Datei mit der Schaltfläche Instanzen starten


Schritt 3. Verbinden der Root-Festplatte vom wiederhergestellten Computer mit einer temporären Instanz


Zuerst müssen Sie die Festplatte von der ursprünglichen Instanz trennen und mit einer temporären Instanz verbinden. Da dies die Root-Festplatte ist, muss die ursprüngliche Instanz gestoppt werden, bevor die Verbindung getrennt werden kann.

  • Gehen Sie zur EC2-Konsole im Abschnitt Instanzen und wählen Sie die ursprüngliche Instanz aus (dies kann durch die zuvor aufgezeichnete Instanz-ID oder durch einen Namen bestimmt werden, der von dem Namen abweicht, den Sie beim Erstellen der temporären Instanz angegeben haben).

    Instanzstopp

    Weiter im Menü Aktionen - Instanzstatus - Stopp .

    Achtung! Wenn die Instanz gestoppt wird, werden alle Daten im lokalen Speicher (Amazon EC2 Instance Store) gelöscht. Wenn Sie Daten zu solchen Volumes haben, sorgen Sie für deren Sicherheit, indem Sie sie gegebenenfalls dauerhaft speichern.
  • Wechseln Sie nach dem Stoppen der Instanz zum Abschnitt Elastic Block Store - Volumes und wählen Sie das Root-Volume der ursprünglichen Instanz aus. Sie kann anhand der gespeicherten Volume-ID oder anhand von Informationen aus der Spalte Anhangsinformationen ermittelt werden, die den Namen der Instanz enthält.

    Laufwerk stumm schalten

    Weiter im Menü Aktionen - Lautstärke trennen
  • Verbinden Sie dieses Volume mit einer temporären Instanz. Wählen Sie es dazu erneut aus und geben Sie dann im Menü Aktionen - Volume anhängen und im angezeigten Dialogfeld Ihre temporäre Instanz an.

    Antriebsverbindung

    Klicken Sie dann auf Anhängen . Wenn die ursprüngliche Instanz über AWS Marketplace AMI erstellt wurde und der Abschnitt AWS Marketplace-Codes enthält, wird eine Fehlermeldung angezeigt, dass der Abschnitt nicht mit Codes mit der Arbeitsinstanz verbunden werden kann.

    Fehler beim Verbinden des Laufwerks mit den AWS Marketplace-Codes

    Stoppen Sie in diesem Fall unsere temporäre Instanz und wiederholen Sie die Schritte, um das Stammvolume der ursprünglichen Instanz mit der temporären Instanz zu verbinden. Der zweite Versuch sollte erfolgreich sein.
  • Sie sollten jetzt sehen, dass beide Laufwerke mit einer temporären Instanz verbunden sind.

    Beide Laufwerke sind mit einer temporären Instanz verbunden
  • Wenn Sie die Instanz gestoppt haben, führen Sie sie aus:

    • Gehen Sie zum Abschnitt Instanzen der Navigationsleiste.
    • Wählen Sie eine temporäre Instanz
    • Weiter im Menü Aktionen - Instanzstatus - Start .


Schritt 4. Vorbereiten der Schlüssel für die Verbindung mit der Instanz über SSH


Linux-Benutzer müssen keine zusätzlichen Schlüssel generieren. Sie müssen dieser Datei nur Leseberechtigungen erteilen:

chmod 400 my-keypair.pem

Schlüsselvorbereitung, wenn Sie Windows ausführen
Um eine Verbindung zu einem Linux-Computer herzustellen, verwenden wir das Dienstprogramm PuTTY. Wenn Sie es nicht installiert haben, laden Sie es herunter . Um eine Verbindung über SSH herzustellen , benötigen Sie einen ppk-Schlüssel , während bei AWS der Schlüssel im pem- Format gespeichert wurde . Gehen Sie wie folgt vor, um den Schlüssel zum gewünschten Format zu erhalten:

  • Öffnen Sie PuTTYgen (installiert mit PuTTY)
  • Wählen Sie 2048 Bit in den RSA-Parametern

    RSA 2048 Bit
  • Laden Sie den gespeicherten PEM-Schlüssel herunter, indem Sie auf Laden klicken (Vorhandene private Schlüsseldatei laden).
  • Geben Sie die Passphrase ( Schlüsselpassphrase ) an und bestätigen Sie sie ( bestätigen Sie die Passphrase ). Dies ist nicht notwendig, aber sicherer. Der einzige Unterschied besteht darin, dass Sie bei der Verbindung mit diesem Schlüssel immer aufgefordert werden, diesen Ausdruck einzugeben, um die Eingabe zu bestätigen
  • Speichern Sie die Datei unter dem Namen, den Sie beim Erstellen des Schlüsselpaars ( KeyPair ) während der Erstellung der temporären Instanz angegeben haben (der Name stimmt mit dem Namen des PEM-Schlüssels überein ).

Der Schlüssel ist fertig.


Schritt 5. Stellen Sie über SSH eine Verbindung zu einer temporären Instanz her


Verbinden Sie Port 22 mit dem Schlüssel. Der Benutzername hängt davon ab, mit welchem ​​AMI die Instanz erstellt wurde. Sie haben es ganz am Anfang aufgeschrieben. Folgende Benutzernamen sind möglich:

  • Amazon Linux 2 oder Amazon Linux AMI - ec2-Benutzer
  • Centos AMI - Centos
  • Debian AMI - Admin oder Root
  • Fedora AMI - ec2-Benutzer oder Fedora
  • RHEL AMI - ec2-Benutzer oder Root
  • SUSE AMI - ec2-Benutzer oder Root
  • Ubuntu AMI - Ubuntu
  • Im Übrigen wenden Sie sich an Ihren AMI-Anbieter, wenn die Namen ec2-user und root nicht funktionieren

Der Hostname, zu dem Sie eine Verbindung herstellen möchten, lautet user@aws-host.amazon.com , wobei user der oben beschriebene Name ist, und aws-host.amazon.com die IP-Adresse Ihrer Instanz, die Sie auf der Registerkarte mit den detaillierten Informationen finden (Daraus haben Sie die Parameter ganz am Anfang gespeichert). Der Parameter heißt IPv4 Public IP . Bitte beachten Sie, dass wenn Sie Elastic IP nicht verwenden, die Instanz jedes Mal, wenn Sie sie starten, eine neue IP-Adresse hat.

Verbindungsanweisungen für Windows-Benutzer
  • Starten Sie PuTTY
  • Im Feld Hostname hat die Adresse das Format Benutzername @ IP-Adresse

    Konfigurieren Sie PuTTY. Hostname

  • Gehen Sie zum Abschnitt Verbindung - SSH - Authentifizierung und laden Sie den ppk-Schlüssel herunter (Private Schlüsseldatei zur Authentifizierung).
  • Klicken Sie auf Öffnen und stimmen Sie zu, dem Server zu vertrauen
  • Wenn Sie beim Erstellen eines ppk-Schlüssels eine Passphrase angegeben haben, geben Sie diese ein, um die Eingabe zu bestätigen:

     Using username "ubuntu". Authenticating with public key "imported-openssh-key" Passphrase for key "imported-openssh-key": 

  • Sie befinden sich auf dem Server.

    Erfolgreiche Serveranmeldung



Schritt 6. Kopieren von Schlüsseln von einer temporären Instanz in das Original


Stellen Sie das Volume bereit, das Sie mit der temporären Instanz verbunden haben, damit Sie auf das Dateisystem zugreifen können.

Partition montieren
Wenn der Laufwerksname beispielsweise /dev/sdf (er kann in Ihrer Instanz anders aussehen), verwenden Sie die folgenden Vorgänge, um das Volume in /mnt/tempvol :

  • Bestimmen Sie die Partitionsnamen des zugeordneten Laufwerks:

    [user ~]$ lsblk

     NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 10G 0 disk └─xvda1 202:1 0 10G 0 part / xvdf 202:80 0 10G 0 disk └─xvdf1 202:81 0 10G 0 part 

    /dev/xvda1 und /dev/xvdf1 sind Festplattenpartitionen. /dev/xvdf1 hat keinen Einhängepunkt (MOUNTPOINT), daher ist dies die Festplattenpartition, die wir zuvor verbunden haben.
  • Erstellen Sie ein temporäres Verzeichnis, um die Partition bereitzustellen:

    [user ~]$ sudo mkdir /mnt/tempvol
  • Hängen Sie die Partition in das erstellte Verzeichnis ein:

    [user ~]$ sudo mount /dev/ xvdf1 /mnt/tempvol


Kopieren Sie die SSH-Schlüssel von der temporären Instanz auf die bereitgestellte Partition.

Achtung! Verwenden Sie den in der Befehlszeile angegebenen Benutzernamen. Dies ist erforderlich, da es trotz der Tatsache, dass Sie erfolgreich eine Verbindung mit einem Standardbenutzernamen hergestellt haben, der vom Betriebssystem abhängt (beschrieben in Schritt 5), im AMI von AWS Marketplace nach der Anmeldung möglicherweise anders sein kann. Für AMI WordPress Certified by Bitnami lautet die Standardanmeldung für Ubuntu bei der Anmeldung über SSH ubuntu . Der Benutzername nach dem Anmelden lautet jedoch bitnami

Schlüssel kopieren
Wenn der Benutzername beispielsweise ubuntu lautet, verwenden Sie den folgenden Befehl zum Kopieren:

[user ~]$ cp .ssh/authorized_keys /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

Wenn Sie nicht /mnt/tempvol , die Dateien in /mnt/tempvol zu bearbeiten, kopieren Sie die Dateien mit sudo und überprüfen Sie die Rechte, um sicherzustellen, dass Sie auf die ursprüngliche Instanz zugreifen können:

  • Überprüfen Sie die Dateiberechtigungen:

    [user ~]$ sudo ls -l /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys
    total 4
    -rw------- 1 200 500 392 Aug 15 00:06 authorized_keys

    Im Beispiel ist 200 die Benutzer-ID und 500 die Gruppen-ID.
  • Starten Sie den Schlüsselkopierbefehl mit sudo :

    [user ~]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

  • Überprüfen Sie, ob sich die Berechtigungen für die Datei geändert haben:

    [user ~]$ sudo ls -l /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

    Wenn sich die Rechte geändert haben, stellen Sie sie wieder her:

    [user ~]$ sudo chown 200 : 500 /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys


Hängen Sie den Abschnitt aus:

[user ~]$ sudo umount /mnt/tempvol

Schritt 7. Starten der Instanz mit wiederhergestelltem Zugriff über SSH


  • Wählen Sie in der EC2-Konsole das Laufwerk aus, das Sie mit dem temporären Laufwerk verbunden haben, und im Menü: Aktionen - Lautstärke trennen . Warten Sie, bis der Status der Festplatte verfügbar ist (Sie können die Informationen über die Schaltfläche Aktualisieren aktualisieren).

    Denken Sie daran, die Instanz vorab zu beenden, wenn der Abschnitt AWS Marketplace-Codes enthält.
  • Wechseln Sie für dasselbe Laufwerk zum Menü Aktionen - Lautstärke anhängen
  • Wählen Sie die ursprüngliche Instanz aus und geben Sie den Namen der Root-Festplatte an, die Sie zu Beginn aufgezeichnet haben.

    Antriebsverbindung
    Klickbares Bild

    Klicken Sie auf Anhängen
  • Instanz ausführen
  • Für EC2-classic : Wenn Elastic IP für die ursprüngliche Instanz konfiguriert wurde, ordnen Sie sie erneut zu:

    • Gehen Sie zum Abschnitt Elastic IP der Navigationsleiste.
    • Wählen Sie die elastische IP- Adresse aus, die Sie ganz am Anfang notiert haben
    • Nächste Aktionen - Zugeordnete Adresse
    • Wählen Sie die ursprüngliche Instanz- ID aus und klicken Sie auf Zuordnen


Schritt 8. Zugriffsprüfung


Stellen Sie mit dem generierten Schlüssel eine Verbindung zur wiederhergestellten Zugriffsinstanz her.

Wenn sich der Name des neuen Schlüsselpaars vom vorherigen unterscheidet, stellen Sie sicher, dass Sie eine Verbindung mit dem neuen privaten Schlüssel herstellen.

Schritt 9. Die letzte Stufe


Wenn Sie eine neue temporäre Instanz erstellt haben, um alle Vorgänge auszuführen, und keine vorhandene verwendet haben, stoppen Sie sie, wenn Sie sie nicht mehr benötigen:

  • Gehen Sie zum Abschnitt Instanzen der Navigationsleiste.
  • Wählen Sie eine temporäre Instanz
  • Weiter im Menü Aktionen - Instanzstatus - Beenden

Auf diese Weise haben Sie wieder Zugriff auf die Linux Amazon EC2-Instanz erhalten.

Source: https://habr.com/ru/post/de420297/


All Articles