Ich habe eine Amazon Ec2 Linux-Instanz mit einem Schlüsselpaar (p1) und habe den privaten Schlüssel auf meinen Desktop heruntergeladen. Bei der Arbeit habe ich ein Schlüsselpaar (p2) auf meinem Arbeitsdesktop erstellt und den öffentlichen Schlüssel über die AWS-Konsole in Amazon importiert.
Zu Hause möchte ich den öffentlichen Schlüssel von Schlüsselpaar p2 hinzufügen, authorized_keys
der meiner AMI-Instanz hinzugefügt werden soll (auf die ich derzeit nur von zu Hause aus zugreifen kann). Da ich jedoch vergessen habe, den öffentlichen Schlüssel von p2 mitzubringen, ist es irgendwie möglich, diesen öffentlichen Schlüssel von Amazon zu exportieren.
Der korrekte Befehl ssh-keygen lautet jedoch:
quelle
chmod 400 your_private_key.pem
wenn Sie bekommen "Berechtigungen sind zu offen Fehler"Ich habe bereits eine Antwort angegeben, die EBS-Volumes verwendet, um an den öffentlichen Schlüssel ssh zu gelangen. Auf andere Weise können Sie jedoch eine temporäre EC2-Instanz mit einem Benutzerdatenskript starten, das den öffentlichen Schlüssel an die Konsolenausgabe sendet. Hier sind die Schritte:
Speichern Sie den folgenden Code in einer Datei mit dem Namen
output-ssh-key.userdata
auf Ihrem lokalen Computer. LAUFEN SIE DIESE BEFEHLE NICHT LOKAL AUS!Führen Sie eine Ubuntu 10.04 LTS-Instanz mit der obigen Datei als Benutzerdatenskript aus. Geben Sie das Schlüsselpaar an, für das Sie den öffentlichen SSH-Schlüssel abrufen möchten:
Fordern Sie so lange die Konsolenausgabe von der Instanz an, bis Ihr öffentlicher SSH-Schlüssel angezeigt wird. Geben Sie die vom Befehl run-instance zurückgegebene Instanz-ID an:
Innerhalb von 2-10 Minuten erhalten Sie folgende Ausgabe:
Die temporäre Instanz wird automatisch in weniger als einer Stunde beendet. Sie können sie jedoch selbst beenden, wenn Sie sicherstellen möchten, dass Ihnen nicht mehr als die zwei Cent in Rechnung gestellt werden, die die Ausführung kosten wird.
quelle
Wenn Sie den privaten SSH-Schlüssel haben, können Sie die Komponente des öffentlichen Schlüssels einfach durch Ausführen des folgenden Befehls ssh-keygen neu generieren :
So viel ist der einfache Teil ... Die AWS-Konsole und -API unterstützen das Drücken von 2 Schlüsselpaaren beim Starten einer EC2-Instanz nicht. Dies ist eine Übung, die der Systemadministrator auf andere Weise ausführen kann.
Wenn Sie Zugriff auf den bereits autorisierten Identitätsschlüssel haben, können Sie einfach den folgenden Befehl ssh-copy-id ausführen :
Dadurch wird der angegebene öffentliche Schlüssel
~user/.ssh/authorized_keys
automatisch auf den Server und in die Datei kopiert , und es werden die richtigen Berechtigungen für die Datei sichergestellt.Der elegantere Weg wäre, die zusätzlichen Identitätsschlüssel in Ihre Konfigurationsverwaltungsprozesse einzubeziehen. In meinem Fall müssen die zusätzlichen Schlüssel zur Puppet- Konfiguration für den Knoten hinzugefügt werden.
Als Randbemerkung, persönliche Präferenz würde aber eine bessere SSH-Schlüsselverwaltungsmethode verwenden, als einfach getrennte Schlüssel für den Arbeits- und Heimstandort einschließen zu müssen. Wie ich in einer vorherigen Frage erwähnt habe, verwalte ich meine Schlüssel auf einem USB-Laufwerk, das ich bei mir habe, und nicht auf einem Computer, den ich benutze.
quelle
Eine andere Möglichkeit wäre, ein kurzes Skript in user_data einzufügen, das dem root einfach einen weiteren ssh-Schlüssel hinzufügt:
Dann können Sie sich als root mit auf der Maschine anmelden
ssh -l root -i <KEYFILE> URL
und einfach den Schlüssel von authorized_keys des Benutzers ec2_user, ubuntu oder wie auch immer er heißt, auslesen.Das einzige - Sie müssen die Maschine öffentlich zugänglich machen und sicherstellen, dass der Zugriff auf Port 22 von außen möglich ist.
quelle