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.
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.
Klickbares BildKlicken Sie auf den Namen des
Root-Geräts, um die Blockspeicher-
ID (
EBS-ID )
abzurufen .
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.
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.
- 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.
- 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).
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.
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.
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.
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.
- 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ührenUm 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
- 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 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 montierenWenn der Laufwerksname beispielsweise
/dev/sdf
(er kann in Ihrer Instanz anders aussehen), verwenden Sie die folgenden Vorgänge, um das Volume in
/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 kopierenWenn 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.
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.