Schlüsselpaar für ec2-Instanz ändern


406

Wie ändere ich das Schlüsselpaar für meine ec2-Instanz in der AWS-Verwaltungskonsole? Ich kann die Instanz stoppen, ich kann ein neues Schlüsselpaar erstellen, aber ich sehe keinen Link zum Ändern des Schlüsselpaars der Instanz.


1
Ich habe die in diesem Video angegebenen Schritte befolgt und es hat funktioniert youtube.com/watch?v=OF2AOekW4IE
Jonathan Nolasco Barrientos

Antworten:


489

Diese Antwort ist nützlich, wenn Sie keinen SSH-Zugriff mehr auf den vorhandenen Server haben (dh Ihren privaten Schlüssel verloren haben).

Wenn Sie noch SSH-Zugriff haben, verwenden Sie bitte eine der folgenden Antworten.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair

Folgendes habe ich dank Eric Hammonds Blogpost getan:

  1. Stoppen Sie die laufende EC2-Instanz
  2. Nehmen Sie die /dev/xvda1Lautstärke ab (nennen wir sie Lautstärke A) - siehe hier
  3. Starten Sie die neue t1.micro EC2-Instanz mit meinem neuen Schlüsselpaar. Stellen Sie sicher, dass Sie es im selben Subnetz erstellen. Andernfalls müssen Sie die Instanz beenden und erneut erstellen. - siehe hier
  4. Hängen Sie Volume A als /dev/xvdf(oder /dev/sdf) an die neue Mikroinstanz an.
  5. SSH an die neue Mikroinstanz und mounten Sie Volume A an /mnt/tmp

    $ sudo mount / dev / xvdf1 / mnt / tmp

  6. Kopieren ~/.ssh/authorized_keysnach/mnt/tmp/home/ubuntu/.ssh/authorized_keys

  7. Ausloggen
  8. Mikroinstanz beenden
  9. Nehmen Sie Band A davon ab
  10. Hängen Sie Volume A wieder an die Hauptinstanz als an /dev/xvda
  11. Starten Sie die Hauptinstanz
  12. Melden Sie sich wie zuvor mit Ihrer neuen .pemDatei an

Das ist es.


6
habe gerade meinen Arsch gerettet, du bist eine Legende!
Garry Welding

8
mkdir /mnt/tmpund mount /dev/xvdf /mnt/tmpsollte dann den Trick für # 5 machen. Und vergessen Sie nicht, dass Schritt 13 wahrscheinlich rm ~/.ssh/known_hostsauf Boxen ist, von denen aus Sie eine Verbindung hergestellt haben.
Brandonscript

21
Das stinkt so… Zuerst sehen Sie die Antwort von Eric Hammond unten. Zweitens: Antwort von Pat Mcb. Sie führen tatsächlich das Gleiche aus, ohne jedoch 1 Stunde Ihrer Zeit mit der lustigen Problemumgehung zu verschwenden. PS. Siehe auch stackoverflow.com/a/24143976/547223
kgadek

3
Ich habe hier wirklich spezifische Anweisungen geschrieben, die auf dieser Antwort aufbauen, aber im Wesentlichen dieselbe Idee haben - gist.github.com/tamoyal/1b7ec4d3871b343d353d . Wie @kgadek bemerkte, ist es etwas schmutzig und zeitaufwändig, aber es ist eine großartige Option, wenn Sie von dem Server ausgeschlossen sind, auf dem Sie den Schlüssel ändern möchten, und wenn Sie keine Kopie dieses Servers hochfahren möchten. Es dauert ungefähr 5-10 Minuten pro Instanz, keine Stunde.
Tony

4
Die von @Eric und @Pat veröffentlichten Antworten sind Lösungen für Personen, die nur ein anderes Schlüsselpaar für ihre Instanzen verwenden möchten. Dies hilft einem Benutzer nicht, der die Schlüsselpaardatei irgendwie verloren hat. Wie würden Sie die Kontrolle über dieses Volume erlangen, ohne das Volume zu trennen und an eine andere Instanz anzuhängen? Ganz zu schweigen vom Ersetzen der Originaldatei .ssh/authorized_keys.
Sanjeev

187

Sobald eine Instanz gestartet wurde, gibt es keine Möglichkeit, das der Instanz zugeordnete Schlüsselpaar auf Metadatenebene zu ändern. Sie können jedoch den SSH-Schlüssel ändern, mit dem Sie eine Verbindung zur Instanz herstellen.

Bei den meisten AMIs gibt es einen Startvorgang, bei dem der öffentliche SSH-Schlüssel heruntergeladen und in einer .ssh / autorisierten_keys-Datei installiert wird, sodass Sie als dieser Benutzer mit dem entsprechenden privaten SSH-Schlüssel SSH eingeben können.

Wenn Sie ändern möchten, mit welchem ​​SSH-Schlüssel Sie auf eine Instanz zugreifen, müssen Sie die Datei "authorized_keys" auf der Instanz selbst bearbeiten und in Ihren neuen öffentlichen SSH-Schlüssel konvertieren.

Die Datei authorized_keys befindet sich im Unterverzeichnis .ssh im Ausgangsverzeichnis des Benutzers, unter dem Sie sich anmelden. Abhängig von dem AMI, das Sie ausführen, kann es sich um Folgendes handeln:

/home/ec2-user/.ssh/authorized_keys
/home/ubuntu/.ssh/authorized_keys
/root/.ssh/authorized_keys

Verwenden Sie nach dem Bearbeiten einer Datei "authorized_keys" immer eine andere Terminal, um zu bestätigen, dass Sie in die Instanz ssh können, bevor Sie die Verbindung zu der Sitzung trennen, mit der Sie die Datei bearbeiten. Sie möchten keinen Fehler machen und sich vollständig aus der Instanz ausschließen.

Während Sie über SSH-Schlüsselpaare auf EC2 nachdenken, empfehle ich, Ihren persönlichen öffentlichen SSH-Schlüssel auf EC2 hochzuladen, anstatt Amazon das Schlüsselpaar für Sie generieren zu lassen.

Hier ist ein Artikel, den ich darüber geschrieben habe:

Hochladen persönlicher SSH-Schlüssel auf Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys

Dies gilt nur für neue Instanzen, die Sie ausführen.


Ich habe diesen Fehler dumm gemacht, ich meine, ich habe die Datei authorized_keys bearbeitet und mich abgemeldet. Jetzt kann ich nicht zurückschicken :(. Irgendwelche Vorschläge zur schnellen Lösung?
aatifh

11
aatifh: Hier ist ein Artikel, den ich darüber geschrieben habe, wie Sie aus dieser Situation herauskommen
Eric Hammond

@EricHammond Dies mag fehl am Platz sein, aber Sie scheinen zu wissen, wie das alles funktioniert ... Ich habe heute eine EC2-Instanz eingerichtet und die private Schlüsseldatei .pemauf meinem Mac erhalten, ssh -i key.pemauthentifiziere mich jedoch nicht (Berechtigung verweigert (öffentlicher Schlüssel)). In der EC2-Verwaltungskonsole unter Schlüsselpaarname wird nichts aufgelistet. Das ist alarmierend für mich. Wie kann ich das einstellen? Basierend auf der Verwaltungskonsole wird angezeigt, dass der Instanz keine von mir konfigurierten Schlüsselpaare zugewiesen wurden!
Steven Lu

1
@StevenLu: Ja, Kommentarthreads sind der falsche Ort, um neue Fragen zu stellen. Versuchen Sie, auf serverfault.com eine neue Frage zu erstellen (für dieses Problem besser geeignet als für den Stapelüberlauf).
Eric Hammond

4
Hier ist ein netter kleiner Einzeiler zum Hinzufügen Ihres Schlüssels. Dies fügt nur Ihren normalen Pub-Schlüssel zusätzlich zu dem von AWS generierten hinzu. Wenn dies nicht funktioniert, haben Sie sich nicht ausgesperrt: stackoverflow.com/a/5654728/193494
Kevin C.

78

Führen Sie diesen Befehl aus, nachdem Sie Ihr AWS-PEM heruntergeladen haben.

ssh-keygen -f YOURKEY.pem -y

Dann sichern Sie die Ausgabe in authorized_keys.

Oder kopieren Sie die PEM-Datei in Ihre AWS-Instanz und führen Sie die folgenden Befehle aus

chmod 600 YOURKEY.pem

und dann

ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys

14
Dies funktioniert nur, wenn Sie bereits Zugriff auf das System haben, oder? (wie nicht die alte .pem-Datei verloren).
Daniel

5
Sie können> anstelle von >> verwenden, um den aktuellen Benutzer zu überschreiben, anstatt ihn hinzuzufügen.
Adrian Lopez

Dies ist die richtige und einfachste Antwort. Sie müssen nicht neu starten, neue Instanzen erstellen oder Laufwerke bereitstellen. Holen Sie sich einfach das .pem, geben Sie es ein und fügen Sie es autorisierten_Hosts hinzu.
Spanky

Ich habe dies getan ssh-keygen -f YOURKEY.pem -y >> ~ / .ssh / autorisierte_keys, aber sitll kann mit dem neuen Schamschlüssel nicht auf mein ec2 zugreifen.
Manukyanv07

Ich habe dies ausgeführt und mein lokaler Schlüssel hat sich nicht geändert.
Luiz

50

Anleitung vom AWS EC2-Support:

  1. Ändern Sie die PEM-Anmeldung
  2. Gehen Sie zu Ihrer EC2-Konsole
  3. Klicken Sie unter NETWORK & SECURITY auf Schlüsselpaar. Klicken Sie auf Schlüsselpaar erstellen
  4. Geben Sie Ihrem neuen Schlüsselpaar einen Namen und speichern Sie die PEM-Datei. Der Name des Schlüsselpaars wird verwendet, um eine Verbindung zu Ihrer Instanz herzustellen
  5. Erstellen Sie eine SSH-Verbindung zu Ihrer Instanz und lassen Sie sie offen
  6. Klicken Sie in PuttyGen auf "Laden", um Ihre PEM-Datei zu laden
  7. Lassen Sie das Optionsfeld SSH-2 RSA aktiviert. Klicken Sie auf "Privaten Schlüssel speichern". Sie erhalten eine Popup-Fensterwarnung. Klicken Sie auf "Ja".
  8. Klicken Sie ebenfalls auf "Öffentlichen Schlüssel speichern", um den öffentlichen Schlüssel zu generieren. Dies ist der öffentliche Schlüssel, den wir in Ihre aktuelle Instanz kopieren werden
  9. Speichern Sie den öffentlichen Schlüssel mit dem neuen Schlüsselpaarnamen und der Erweiterung .pub
  10. Öffnen Sie den Inhalt des öffentlichen Schlüssels in einem Notizblock
  11. Kopieren Sie den Inhalt unter "Kommentar:" importierter-öffnen-Schlüssel "und vor" ---- END SSH2 PUBLIC KEY ----
    Hinweis - Sie müssen den Inhalt als eine Zeile kopieren - alle neuen Zeilen löschen
  12. Öffnen Sie auf Ihrer verbundenen Instanz Ihre Datei "authorized_keys" mit dem Tool vi. Führen Sie den folgenden Befehl aus: vi .ssh / authorized_keys Sie sollten auch den ursprünglichen öffentlichen Schlüssel in der Datei sehen
  13. Bewegen Sie den Cursor auf die Datei an das Ende Ihres ersten öffentlichen Schlüsselinhalts: Geben Sie "i" zum Einfügen ein
  14. Geben Sie in der neuen Zeile "ssh-rsa" ein und fügen Sie ein Leerzeichen hinzu, bevor Sie den Inhalt des öffentlichen Schlüssels, das Leerzeichen und den Namen der .pem-Datei (ohne das .pem) einfügen. Hinweis - Sie sollten eine Zeile mit dem gleiches Format wie in der vorherigen Zeile
  15. Drücken Sie die Esc-Taste und geben Sie Folgendes ein: wq!

Dadurch wird die aktualisierte Datei authorized_keys gespeichert

Versuchen Sie nun, mit Ihrem neuen Schlüssel pai eine neue SSH-Sitzung für Ihre Instanz zu öffnen

Wenn Sie bestätigt haben, dass Sie mit dem neuen Schlüsselpaar SSH in die Instanz einbinden können, können Sie vi .ssh / authorized_key und den alten Schlüssel löschen.

Antwort auf Shaggies Bemerkung:

Wenn Sie keine Verbindung zur Instanz herstellen können (z. B. der Schlüssel ist beschädigt), trennen Sie das Volume über die AWS-Konsole ( http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html) ) und ordnen Sie es wieder der Arbeitsinstanz zu, dann ändern Sie den Schlüssel auf dem Volume und verbinden Sie es wieder mit der vorherigen Instanz.


6
Sollte die beste Antwort sein

2
Was ist, wenn der alte Schlüssel beschädigt wurde und Sie keine Verbindung mit der Instanz über Putty herstellen können, da Sie die alte ppk-Datei nicht haben?
Shaggie

3
Was ist, wenn Sie keinen SSH-Zugriff haben, daher dieses Problem?
Jayden Lawson

3
Jayden Lawson, was ist, wenn Sie keine Internetverbindung haben?
Elia Weiss

1
Es kann vorkommen, dass das Schlüsselpaar mit einer anderen Person geteilt wird und nun die Schlüsselpaare geändert werden muss, damit sich die Person nicht mehr anmelden kann. Oder viele andere Gründe wie diese
Harikrishna

38

Ich bemerkte , dass , wenn sie von Elastic Beanstalk verwaltet, Sie können Ihr aktives EC2 - Schlüsselpaar ändern. Wählen Sie unter Elastic Beanstalk> Konfiguration> Sicherheit den neuen Schlüssel aus der Dropdown- Liste EC2-Schlüsselpaar aus. In dieser Meldung werden Sie gefragt, ob Sie sicher sind:

EC2KeyName: Änderungen an den Einstellungen der Option EC2KeyName werden nicht sofort wirksam. Jede Ihrer vorhandenen EC2-Instanzen wird ersetzt und Ihre neuen Einstellungen werden dann wirksam.

Meine Instanz wurde bereits beendet, als ich dies tat. Es wurde dann gestartet, beendet und erneut gestartet. Anscheinend bedeutet "Ersetzen" das Beenden und Erstellen einer neuen Instanz. Wenn Sie Ihr Startvolume geändert haben, erstellen Sie zuerst eine AMI und geben Sie diese AMI im selben Formular für Elastic Beanstalk> Konfiguration> Instanzen wie die benutzerdefinierte AMI-ID an . Dies warnt auch vor dem Ersetzen der EC2-Instanzen.

Nachdem Sie Ihr EC2-Schlüsselpaar und Ihre benutzerdefinierte AMI-ID geändert und Warnungen zu beiden angezeigt haben, klicken Sie auf Speichern, um fortzufahren.

Denken Sie daran, dass sich die IP-Adresse ändert, wenn die Instanz neu erstellt wird, sodass Sie eine neue IP-Adresse von der EC2-Konsole abrufen müssen, um eine Verbindung über SSH herzustellen.


1
Dies befindet sich jetzt im Abschnitt "Sicherheit" der Konfiguration.
Will Demaine

Danke @WillDemaine. AWS wird derzeit nicht verwendet, daher nehme ich Ihr Wort und genehmige die Bearbeitung!
Mark Berry

31

Ich habe diesen Ansatz durchlaufen und konnte ihn nach einiger Zeit zum Laufen bringen. Das Fehlen tatsächlicher Befehle machte es schwierig, aber ich fand es heraus. JEDOCH - viel einfacher Ansatz wurde gefunden und kurz danach getestet:

  1. Speichern Sie Ihre Instanz als AMI (Neustart oder nicht, ich schlage einen Neustart vor). Dies funktioniert nur, wenn EBS unterstützt.
  2. Starten Sie dann einfach eine Instanz von diesem AMI und weisen Sie Ihre neue Schlüsseldatei zu.
  3. Bewegen Sie sich über Ihre elastische IP (falls zutreffend) zu Ihrer neuen Instanz, und Sie sind fertig.

Dies funktionierte total für mich, nachdem ich versehentlich ~ / .ssh
morri

Ich habe das gleiche getan und es hat funktioniert, jetzt kann ich mich mit neuem PEM anmelden. Aber ich kann mich immer noch mit dem alten Pem anmelden. Jetzt sind also 2 Pems gültig.
Vitaly

Zu Ihrer Information, dies ist eine schnelle und einfache GUI-Methode zum Hochfahren eines neuen EC2 mit einem anderen Schlüssel, wenn beschäftigt, aber da @vitaly festgestellt hat, dass der alte PEM-Schlüssel ebenfalls gültig ist, müssen Sie zu /home/ec2-user/.ssh/authorized_keys gehen und ihn entfernen der alte PEM-Schlüssel aus der Datei. Vielen Dank für die schnelle Pem-Schlüsselwechselmethode, die nett und einfach ist, wenn Sie keine Zeit haben.
Blu Towers

Das hat bei mir nicht funktioniert. AWS sagte immer wieder, dass das Kennwort nicht verfügbar sei, und in einer anderen Nachricht wurde erwähnt, dass die Instanz, wenn sie aus einem AMI erstellt wurde, die Anmeldeinformationen des übergeordneten Images verwendet.
Brady

15

Wenn die folgenden Schritte ausgeführt werden, wird viel Zeit gespart und die laufende Instanz muss nicht gestoppt werden.

  1. Starten Sie die neue t1.micro EC2-Instanz mit einem neuen Schlüsselpaar. Stellen Sie sicher, dass Sie es im selben Subnetz erstellen. Andernfalls müssen Sie die Instanz beenden und erneut erstellen.
  2. SSH auf die neue Mikroinstanz und kopieren Sie den Inhalt von ~ / .ssh / authorized_keys irgendwo auf Ihren Computer.
  3. Melden Sie sich mit dem alten SSH-Schlüssel bei der Hauptinstanz an .
  4. Kopieren und ersetzen Sie den Dateiinhalt von Punkt 2 nach ~ / .ssh / autorisierte_Tasten
  5. Jetzt können Sie sich nur mit neuem Schlüssel wieder anmelden. Der alte Schlüssel funktioniert nicht mehr.

Das ist es. Viel Spaß :)


14

Ich glaube, der einfachste Ansatz ist:

  1. Erstellen Sie ein AMI-Image der vorhandenen Instanz.
  2. Starten Sie eine neue EC2-Instanz mit dem AMI-Image (in Schritt 1 erstellt) mit einem neuen Schlüsselpaar.
  3. Melden Sie sich mit neuem Schlüssel bei einer neuen EC2-Instanz an.

@Brady, was funktioniert überhaupt nicht? einen Schnappschuss machen? Instanz starten? Anmeldung?
Sergey

4
Ich bin nicht sicher, ob es sich um eine kürzlich vorgenommene Änderung handelt oder nicht. Wenn Sie jedoch eine AMI aus einer Instanz erstellen, der bereits ein Schlüssel zugewiesen wurde, muss dieser Schlüssel verfügbar sein, um sich beim kopierten AMI-Image anzumelden, unabhängig davon, ob oder nicht Sie weisen während der Erstellung ein anderes Schlüsselpaar zu.
Brady

Dies ist keine Lösung, da @Brady erwähnt, dass es nicht funktioniert.
Greg Sansom

8

Wenn Sie die ElasticBeanstalk-Plattform verwenden, können Sie die Schlüssel folgendermaßen ändern:

  • Elastische Bohnenstangenplatte
  • Aufbau
  • Instanzen (Zahnrad oben rechts)
  • EC2-Schlüsselpaar

Dadurch wird die aktuelle Instanz beendet und eine neue mit ausgewählten Schlüsseln / Einstellungen erstellt.


2
Dies ist zweifellos die einfachste Antwort hier, vorausgesetzt, Sie sind auf ElasticBeanstalk.
Yuval Karmi

2
Warnung ! Dies ist eine gefährliche Lösung. Der AWS setzt auch den an diese Instanz angeschlossenen Speicher (dh die virtuelle Festplatte) zurück (!!). Sie müssen also den Speicher trennen und ihn nach dem Auslösen einer neuen Instanz erneut anbringen, anstatt der neuen, die mit der neuen Instanz geliefert wurde. Natürlich ist es am besten, wenn es sich nicht um ein verschlüsseltes Volume handelt (und Sie haben seinen Schlüssel nicht verloren.)
JamesC

7

In dieser Frage werden zwei Szenarien gestellt:

1) Sie haben keinen Zugriff auf die PEM-Datei , deshalb möchten Sie eine neue erstellen.

2) Sie haben die. PEM-Dateizugriff mit Ihnen, aber Sie möchten nur eine neue PEM-Datei für ändern oder erstellen Sicherheitsgründen oder aus Sicherheitsgründen .

Also , wenn Sie Ihre Schlüssel verloren haben, können Sie blättern und andere Antworten sehen . Aber wenn Sie einfach nur Ihre .pem - Datei aus Sicherheitsgründen ändern Sie folgende Schritte: -

1) Gehen Sie zur AWS-Konsolenanmeldung und erstellen Sie dort eine neue PEM-Datei aus dem Schlüsselpaarbereich. Die PEM-Datei wird automatisch auf Ihren PC heruntergeladen

2) Ändern Sie die Berechtigung in 400, wenn Sie Linux / Ubuntu verwenden, und drücken Sie den folgenden Befehl

chmod 400 yournewfile.pem

3) Generieren Sie RSA der neu heruntergeladenen Datei auf Ihrem lokalen Computer

ssh-keygen -f yournewfile.pem -y

4) Kopieren Sie den RSA-Code von hier

5) Nun SSH zu Ihrer Instanz über die vorherige .pem-Datei

ssh -i oldpemfileName.pem username@ipaddress

sudo vim  ~/.ssh/authorized_keys

6) Geben Sie ein bis zwei Zeilen Platz, fügen Sie den kopierten RSA der neuen Datei hier ein und speichern Sie die Datei

7) Jetzt ist Ihre neue PEM-Datei mit der laufenden Instanz verknüpft

8) Wenn Sie den vorherigen Zugriff auf die PEM-Datei deaktivieren möchten, bearbeiten Sie einfach die

sudo vim ~/.ssh/authorized_keys

Datei und entfernen oder ändern Sie die vorherige RSA von hier.

Hinweis: - Vorsichtig entfernen, damit neu erstellte RSA nicht geändert werden.

Auf diese Weise können Sie die neue PEM-Datei ändern / mit Ihrer laufenden Instanz verbinden.

Sie können den Zugriff auf zuvor generierte PEM-Dateien aus Sicherheitsgründen widerrufen.

Hoffe es würde helfen!


2
Diese Lösung gefällt mir irgendwie, weil ich keine neue Instanz mit eingefrorenem AMI-Image erstellen muss. Aber kann diese Methode den zugehörigen Schlüsselpaarnamen der EC2-Instanz im EC2-Dashboard ändern? @Parveen yadav
süchtig

6

Die einfachste Lösung besteht darin, den Inhalt von zu kopieren

~/.ssh/id_rsa.pub

in die autorisierten_Tasten Ihrer AWS-Instanz unter

~/.ssh/authorized_keys

Auf diese Weise können Sie in die EC2-Instanz ssh, ohne eine pem-Datei für den Befehl ssh anzugeben. Sie können alle anderen Schlüssel entfernen, sobald Sie die Verbindung getestet haben.

Wenn Sie einen neuen Schlüssel erstellen müssen, um ihn für andere Personen freizugeben, können Sie dies tun mit:

ssh-keygen -t rsa

Dadurch wird die private key.pem-Datei erstellt, und Sie können den öffentlichen Schlüssel davon abrufen mit:

ssh-keygen -f private_key.pem -y > public_key.pub

Jeder, der private_key.pem hat, kann sich mit verbinden

ssh user@host.com -i private_key.pem

4
Wie kann ich darauf zugreifen, ~/.ssh/authorized_keyswenn ich nicht einmal eine SSH-aws-Instanz kann?
Prayagupd

3
Ich glaube, Ihre letzte Zeile ist falsch. Sie können nur dann eine Verbindung herstellen, wenn Sie den privaten Schlüssel haben. Ssh -i private_key.pem user@host.com. Wenn Sie möchten, dass jemand Ihnen Zugriff auf seine Instanz gewährt, können Sie Ihren öffentlichen Schlüssel sicher für ihn freigeben und er kann ihn zu seinen autorisierten Schlüsseln hinzufügen, um Ihnen als Benutzer Zugriff auf die Instanz zu gewähren ...
code4cause

5

Sie müssen das Root-Gerät nicht drehen und den öffentlichen SSH-Schlüssel ändern authorized_keys. Dafür können Benutzerdaten verwendet werden, um Ihnen SSH-Schlüssel zu jeder Instanz hinzuzufügen. Dazu müssen Sie zuerst ein neues KeyPair mit der AWS-Konsole oder über ssh-keygen erstellen.

ssh-keygen -f YOURKEY.pem -y

Dadurch wird ein öffentlicher Schlüssel für Ihr neues SSH-Schlüsselpaar generiert. Kopieren Sie diesen öffentlichen Schlüssel und verwenden Sie ihn im folgenden Skript.

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6xigPPA/BAjDPJFflqNuJt5QY5IBeBwkVoow/uBJ8Rorke/GT4KMHJ3Ap2HjsvjYrkQaKANFDfqrizCmb5PfAovUjojvU1M8jYcjkwPG6hIcAXrD5yXdNcZkE7hGK4qf2BRY57E3s25Ay3zKjvdMaTplbJ4yfM0UAccmhKw/SmH0osFhkvQp/wVDzo0PyLErnuLQ5UoMAIYI6TUpOjmTOX9OI/k/zUHOKjHNJ1cFBdpnLTLdsUbvIJbmJ6oxjSrOSTuc5mk7M8HHOJQ9JITGb5LvJgJ9Bcd8gayTXo58BukbkwAX7WsqCmac4OXMNoMOpZ1Cj6BVOOjhluOgYZbLr" >> /home/hardeep/.ssh/authorized_keys
--//

Nach dem Neustart verfügt der Computer über den angegebenen SSH-Veröffentlichungsschlüssel. Entfernen Sie die Benutzerdaten nach dem ersten Neustart. Lesen Sie mehr über Benutzerdaten beim Start .


4
  • Erstellen Sie einen neuen Schlüssel, z. B. mit dem PuTTY Key Generator
  • Instanz stoppen
  • Legen Sie die Instanzbenutzerdaten so fest, dass der öffentliche Schlüssel auf den Server übertragen wird
  • Instanz starten

Warnung: Vergessen Sie nicht, die Benutzerdaten erneut zu löschen. Andernfalls wird diese Taste bei jedem Instanzstart gedrückt. Schritt-für-Schritt-Anleitung .

#cloud-config
bootcmd:
 - echo 'ssh-rsa AAAAB3Nz...' > /root/.ssh/authorized_keys

Geben Sie hier die Bildbeschreibung ein


1
Dies ist der offizielle AWS-Weg, um dies zu tun, also Requisiten an @reto. aws.amazon.com/premiumsupport/knowledge-center/…
Bevan

3

Ich habe die folgenden Schritte ausprobiert und es hat funktioniert, ohne die Instanz zu stoppen. Meine Anforderung war: Da ich meinen Client-Computer geändert habe, konnte ich mich aufgrund der alten PEM-Datei nicht bei der ec2-Instanz anmelden.

  1. Melden Sie sich mit Ihrer alten PEM-Datei vom alten Computer an der ec2-Instanz an. Öffnen Sie ~ / .ssh / authorized_keys

Sie werden Ihre alten Schlüssel in dieser Datei sehen.

  1. ssh-keygen -f YOUR_PEM_FILE.pem -y Es wird ein Schlüssel generiert. Hängen Sie den Schlüssel an ~ / .ssh / authorized_keys an, die in Schritt 1 geöffnet wurden. Der alte Schlüssel muss nicht gelöscht werden.

  2. Erstellen Sie in der AWS-Konsole ein neues Schlüsselpaar. Speichern Sie es in Ihrer neuen Maschine. Benennen Sie es in die alte PEM-Datei um - Grund dafür ist, dass die alte PEM-Datei weiterhin der ec2-Instanz in AWS zugeordnet ist.

Alles erledigt.

Ich kann mich von meinem neuen Client-Computer aus bei AWS ec2 anmelden.


3

Sie haben mehrere Möglichkeiten, den Schlüssel Ihrer EC2-Instanz zu ersetzen.

  1. Sie können den Schlüssel manuell in der Datei .ssh / authorized_keys ersetzen. Dies setzt jedoch voraus, dass Sie tatsächlich Zugriff auf die Instanz oder das Volume haben, wenn dies unverschlüsselt ist.
  2. Sie können den AWS Systems Manager verwenden. Dazu muss ein Agent installiert sein.

Da die erste Option leicht in den Antworten oder in der Suchmaschine Ihrer Wahl zu finden ist, möchte ich mich auf den Systemmanager konzentrieren.

  1. Öffnen Sie den Dienst Systems Manager
  2. Klicken Sie auf Automationder linken Seite.
  3. Klicke auf Execute Automation
  4. Wählen Sie AWSSupport-TroubleshootSSH(normalerweise auf der letzten Seite)

Weitere Informationen finden Sie in der offiziellen AWS-Dokumentation


1

Die Antwort von Yegor256 hat bei mir funktioniert, aber ich dachte, ich würde nur einige Kommentare hinzufügen, um denjenigen zu helfen, die nicht so gut Laufwerke montieren können (wie ich!):

Amazon gibt Ihnen die Wahl, wie Sie das Volume benennen möchten, wenn Sie es anhängen. Sie haben einen Namen im Bereich von / dev / sda - / dev / sdp verwendet. Die neueren Versionen von Ubuntu benennen dann das, was Sie dort eingegeben haben, in / dev / xvd (x) oder etwas in diesem Sinne um.

Also habe ich / dev / sdp als Namen für den Mount-Namen in AWS ausgewählt, mich dann beim Server angemeldet und festgestellt, dass Ubuntu mein Volume in / dev / xvdp1 umbenannt hat. Ich musste dann das Laufwerk montieren - für mich musste ich es so machen:

mount -t ext4 xvdp1 /mnt/tmp

Nachdem ich durch all diese Reifen gesprungen war, konnte ich unter / mnt / tmp auf meine Dateien zugreifen


Als Kommentar sollte dies als Kommentar hinzugefügt werden, nicht als Antwort.
JDL

0

Dies funktioniert nur, wenn Sie Zugriff auf die Instanz haben, in der Sie den Schlüssel ändern / hinzufügen möchten. Sie können ein neues Schlüsselpaar erstellen. Wenn Sie bereits über das Schlüsselpaar verfügen, können Sie den öffentlichen Schlüssel des neuen Paares in die Datei authorized_keys auf Ihrer Instanz einfügen.

vim .ssh / autorisierte_Tasten

Jetzt können Sie den privaten Schlüssel für dieses Paar verwenden und sich anmelden.

Hoffe das hilft.


0

Mein Problem war, ich habe es IPeher mit als mit der Öffentlichkeit versucht DNS. Dann habe ich es mit versucht public DNSund es ist gelöst


0

Wenn Sie sich nicht bei VM anmelden und Ihre SSH-Schlüssel löschen können, können Sie das Schlüsselpaar Ihres ec2 auch mithilfe der folgenden Schritte ändern. Schritt für Schritt 1) ​​Stoppen Sie Ihre ec2-Instanz. 2) Machen Sie einen Schnappschuss von VM und Speicher. 3) Erstellen Sie eine neue VM, während Sie sie erstellen. Wählen Sie Ihren Snapshot aus und erstellen Sie eine VM aus Ihrem Snapshot. 4) während die Erstellung der VM Ihr Schlüsselpaar herunterlädt. 5) Sobald Ihre VM UP ist, können Sie mit einem neuen Schlüsselpaar ssh und Ihre Daten werden auch zurück.


0

Was du tun kannst...

  1. Erstellen Sie ein neues Instanzprofil / eine neue Instanzrolle, an die die AmazonEC2RoleForSSM-Richtlinie angehängt ist.

  2. Hängen Sie dieses Instanzprofil an die Instanz an.

  3. Verwenden Sie den SSM-Sitzungsmanager, um sich bei der Instanz anzumelden.
  4. Verwenden Sie keygen auf Ihrem lokalen Computer, um ein Schlüsselpaar zu erstellen.
  5. Schieben Sie den öffentlichen Teil dieses Schlüssels mithilfe Ihrer SSM-Sitzung auf die Instanz.
  6. Profitieren.

0

Danke für die Tipps Jungs. Ich werde sie auf jeden Fall im Auge behalten, wenn ich die Schlüsselpaare ausruhen muss. Im Interesse von Effizienz und Faulheit habe ich mir jedoch noch etwas anderes ausgedacht:

  1. Erstellen Sie Ihr neues Schlüsselpaar und laden Sie die Anmeldeinformationen herunter
  2. Klicken Sie mit der rechten Maustaste auf Ihre Instanz> AMI erstellen
  3. Beenden Sie Ihre Instanz (oder stoppen Sie sie einfach, bis Sie sicher sind, dass Sie aus Ihrem neuen glänzenden AMI eine weitere erstellen können).
  4. Starten Sie eine neue EC2-Instanz von dem gerade erstellten AMI und geben Sie Ihr neues Schlüsselpaar an, das in Schritt (1) oben erstellt wurde.

Ich hoffe, dies kann Ihnen von Nutzen sein und Ihnen Zeit sparen sowie die Menge an weißem Haar minimieren, die Sie durch solche Dinge erhalten :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.