Ich habe AWS Console Zugriff auf ein Konto mit zwei laufenden Instanzen erhalten, die ich (in der Produktion) nicht herunterfahren kann. Ich möchte jedoch SSH-Zugriff auf diese Instanzen erhalten. Ist es möglich, ein neues Schlüsselpaar zu erstellen und es auf die Instanzen anzuwenden, damit ich SSH ausführen kann? Das Abrufen der vorhandenen PEM-Datei für das Schlüsselpaar, unter dem die Instanzen erstellt wurden, ist derzeit keine Option.
Wenn dies nicht möglich ist, gibt es eine andere Möglichkeit, in die Instanzen zu gelangen?
amazon-web-services
authentication
ssh
amazon-ec2
permissions
Chris Wagner
quelle
quelle
ssh-add
sollte tun, was Sie brauchen.Antworten:
Sie können kein Schlüsselpaar auf eine laufende Instanz anwenden. Sie können das neue Schlüsselpaar nur zum Starten einer neuen Instanz verwenden.
Wenn es sich um ein EBS-Boot-AMI handelt, können Sie es für die Wiederherstellung stoppen und einen Snapshot des Volumes erstellen. Erstellen Sie darauf basierend ein neues Volume. Und Sie können es wieder verwenden, um die alte Instanz zu starten, ein neues Image zu erstellen oder Daten wiederherzustellen.
Daten bei kurzlebiger Speicherung gehen jedoch verloren.
Aufgrund der Beliebtheit dieser Frage und Antwort wollte ich die Informationen in dem Link erfassen, den Rodney in seinem Kommentar gepostet hat.
Kredit geht an Eric Hammond für diese Informationen .
Fixieren von Dateien auf dem Root-EBS-Volume einer EC2-Instanz
Sie können Dateien auf dem Root-EBS-Volume einer EC2-Instanz untersuchen und bearbeiten, selbst wenn Sie sich in einer für Sie katastrophalen Situation befinden, wie:
Auf einem physischen Computer an Ihrem Schreibtisch können Sie das System einfach mit einer CD oder einem USB-Stick starten, die Festplatte einbinden, die Dateien auschecken und reparieren und dann den Computer neu starten, um wieder im Geschäft zu sein.
Eine entfernte EC2-Instanz scheint jedoch entfernt und unzugänglich zu sein, wenn Sie sich in einer dieser Situationen befinden. Glücklicherweise bietet uns AWS die Leistung und Flexibilität, um ein solches System wiederherstellen zu können, vorausgesetzt, wir führen EBS-Startinstanzen und keinen Instanzspeicher aus.
Der Ansatz auf EC2 ähnelt in gewisser Weise der physischen Lösung, aber wir werden die fehlerhafte „Festplatte“ (Root-EBS-Volume) verschieben und auf eine andere Instanz montieren, beheben und dann zurück verschieben.
In einigen Situationen ist es möglicherweise einfacher, eine neue EC2-Instanz zu starten und die fehlerhafte Instanz wegzuwerfen. Wenn Sie Ihre Dateien jedoch wirklich reparieren möchten, ist hier der Ansatz, der für viele funktioniert hat:
Konfiguration
Identifizieren Sie die ursprüngliche Instanz (A) und das Volume, das das defekte Root-EBS-Volume enthält, mit den Dateien, die Sie anzeigen und bearbeiten möchten.
Identifizieren Sie die zweite EC2-Instanz (B), mit der Sie die Dateien auf dem ursprünglichen EBS-Volume reparieren. Diese Instanz muss in derselben Verfügbarkeitszone wie Instanz A ausgeführt werden, damit das EBS-Volume daran angehängt werden kann. Wenn noch keine Instanz ausgeführt wird, starten Sie eine temporäre.
Stoppen Sie die defekte Instanz A (warten Sie, bis sie vollständig zum Stillstand gekommen ist), trennen Sie das Root-EBS-Volume von der Instanz (warten Sie, bis sie getrennt wird) und hängen Sie das Volume dann an Instanz B auf einem nicht verwendeten Gerät an.
ssh auf Instanz B und mounten Sie das Volume, damit Sie auf das Dateisystem zugreifen können.
Repariere es
Zu diesem Zeitpunkt kann Ihr gesamtes Root-Dateisystem von Instanz A unter / vol-a auf Instanz B angezeigt und bearbeitet werden. Beispielsweise möchten Sie möglicherweise:
Hinweis: Die Benutzeroberflächen der beiden Instanzen sind möglicherweise nicht identisch. Seien Sie also vorsichtig, wenn Sie Dateien erstellen, bearbeiten oder kopieren, die Nicht-Root-Benutzern gehören. Beispielsweise hat Ihr MySQL-Benutzer in Instanz A möglicherweise dieselbe UID wie Ihr Postfix-Benutzer in Instanz B, was zu Problemen führen kann, wenn Sie Dateien mit einem Namen chownieren und das Volume dann wieder auf A verschieben.
Einpacken
Wenn Sie fertig sind und mit den Dateien unter / vol-a zufrieden sind, heben Sie das Dateisystem auf (noch auf Instanz B):
Zurück auf Ihrem System mit ec2-api-tools, verschieben Sie das EBS-Volume weiter auf die ursprüngliche Instanz A und starten Sie die Instanz erneut:
Hoffentlich haben Sie das Problem behoben, Instanz A wird einwandfrei angezeigt, und Sie können das erreichen, was Sie ursprünglich geplant hatten. Wenn nicht, müssen Sie diese Schritte möglicherweise so lange wiederholen, bis sie funktionieren.
Hinweis: Wenn Instanz A beim Stoppen eine elastische IP-Adresse zugewiesen wurde, müssen Sie sie nach dem erneuten Starten erneut zuordnen.
Merken! Wenn Ihre Instanz B nur für diesen Prozess vorübergehend gestartet wurde, vergessen Sie nicht, sie jetzt zu beenden.
quelle
Obwohl Sie einer laufenden EC2-Instanz kein Schlüsselpaar direkt hinzufügen können, können Sie einen Linux-Benutzer erstellen und ein neues Schlüsselpaar für ihn erstellen und es dann wie beim Schlüsselpaar des ursprünglichen Benutzers verwenden.
In Ihrem Fall können Sie die Instanz Besitzer fragen (die es geschaffen) folgendes zu tun. Somit muss der Instanzbesitzer seine eigenen Schlüssel nicht mit Ihnen teilen, aber Sie könnten trotzdem in diese Instanzen ssh. Diese Schritte wurden ursprünglich von Utkarsh Sengar (aka. @Zengr ) unter http://utkarshsengar.com/2011/01/manage-multiple-accounts-on-1-amazon-ec2-instance/ veröffentlicht . Ich habe nur ein paar kleine Änderungen vorgenommen.
Schritt 1: Standardmäßig Benutzer "Ubuntu" anmelden :
Schritt 2: Erstellen Sie einen neuen Benutzer, wir werden unseren neuen Benutzer "John" nennen :
Legen Sie das Passwort für "john" fest von:
Fügen Sie "John" zu Sudoers Liste hinzu, indem Sie:
.. und fügen Sie am Ende der Datei Folgendes hinzu:
In Ordung! Wir haben unseren neuen Benutzer erstellt. Jetzt müssen Sie die Schlüsseldatei generieren, die zum Anmelden benötigt wird, wie wir es in Schritt 1 mit my_orin_key.pem getan haben.
Beenden Sie nun und kehren Sie zu Ubuntu zurück, ohne Wurzel.
Schritt 3: Erstellen der öffentlichen und privaten Schlüssel :
Geben Sie das Passwort ein, das Sie in Schritt 2 für „john“ erstellt haben. Erstellen Sie dann ein Schlüsselpaar. Denken Sie daran, dass die Passphrase für das Schlüsselpaar mindestens 4 Zeichen lang sein sollte.
Im obigen Schritt ist John der Benutzer, den wir erstellt haben, und Ubuntu ist die Standardbenutzergruppe.
Schritt 4: Jetzt müssen Sie nur noch den Schlüssel „John“ herunterladen . Ich verwende scp, um Dateien von EC2 herunterzuladen / hochzuladen. Hier erfahren Sie, wie Sie dies tun können.
Sie müssen die Datei weiterhin mit dem Benutzer ubuntu kopieren , da Sie nur den Schlüssel für diesen Benutzernamen haben. Sie müssen den Schlüssel also in den Ubuntu-Ordner verschieben und auf 777 ändern.
Kommen Sie nun zum Terminal des lokalen Computers, wo Sie die Datei my_orig_key.pem haben, und gehen Sie folgendermaßen vor:
Mit dem obigen Befehl wird der Schlüssel "john" in das aktuelle Arbeitsverzeichnis auf Ihrem lokalen Computer kopiert. Nachdem Sie den Schlüssel auf Ihren lokalen Computer kopiert haben, sollten Sie "/ home / ubuntu / john" löschen, da es sich um einen privaten Schlüssel handelt.
Jetzt ist eine Ihrer lokalen Maschinen chmod John auf 600.
Schritt 5: Zeit zum Testen Ihres Schlüssels :
Auf diese Weise können Sie mehrere Benutzer für die Verwendung einer EC2-Instanz einrichten !!
quelle
Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus:
Nachdem dieser Befehl ausgeführt wurde, wird eine Datei mit der Endung * .pub generiert. Kopieren Sie den Inhalt dieser Datei.
Bearbeiten Sie auf dem Amazon-Computer ~ / .ssh / autorisierte_Tasten und fügen Sie den Inhalt der * .pub-Datei ein (und entfernen Sie zuerst alle vorhandenen Inhalte).
Sie können dann SSH mit der anderen Datei ausführen, die mit dem Befehl ssh-keygen (dem privaten Schlüssel) generiert wurde.
quelle
ssh-rsa AAAAB3NzaC1yc2EA...DsGt66 my-key-pair
Dies ist mir früher passiert (ich hatte keinen Zugriff auf eine EC2-Instanz, die von einer anderen Person erstellt wurde, aber Zugriff auf die AWS-Webkonsole), und ich habe die Antwort gebloggt : http://readystate4.com/2013/04/09/aws-gaining- SSH-Zugriff auf eine ec2-Instanz, bei der Sie den Zugriff auf / verloren haben
Grundsätzlich können Sie das EBS-Laufwerk trennen und an einen EC2 anschließen, auf den Sie Zugriff haben. Fügen Sie Ihren SSH-Pub-Schlüssel
~ec2-user/.ssh/authorized_keys
auf diesem angeschlossenen Laufwerk hinzu. Setzen Sie es dann wieder auf die alte EC2-Instanz. Schritt für Schritt in den Link mit Amazon AMI.Sie müssen keine Snapshots erstellen oder eine neue geklonte Instanz erstellen.
quelle
In meinem Fall habe ich diese Dokumentation verwendet, um meiner Instanz von Elastic Beanstalk ein Schlüsselpaar zuzuordnen
Konfigurieren von Amazon EC2-Serverinstanzen mit Elastic Beanstalk
quelle
Sie können der Instanz einfach mit dem folgenden Befehl einen neuen Schlüssel hinzufügen:
Sie können domain_alias in der Konfiguration ~ / .ssh konfigurieren
quelle
Ich habe keine einfache Möglichkeit gefunden, ein neues Schlüsselpaar über die Konsole hinzuzufügen, aber Sie können dies manuell tun.
SSh einfach mit dem vorhandenen Schlüsselpaar in deine EC2-Box. Bearbeiten Sie dann die ~ / .ssh / autorisierten_Tasten und fügen Sie den neuen Schlüssel in eine neue Zeile ein. Beenden und ssh über die neue Maschine. Erfolg!
quelle
stackoverflow.com/questions/7881469/change-key-pair-for-ec2-instance
quelle
In Elasticbeanstalk-Umgebungen können Sie ein Schlüssel-Wert-Paar auf eine laufende Instanz wie folgt anwenden:
quelle
Sie können tatsächlich ein Schlüsselpaar über die Konfigurationsseite für elastische Bohnenstangen hinzufügen. Anschließend wird Ihre Instanz für Sie neu gestartet und alles funktioniert.
quelle