Instanz von SSH zu Elastic Beanstalk

304

Ich habe mich gerade für das neue Angebot von Amazon für elastische Bohnenstangen angemeldet. Was ich nicht herausfinden kann, ist, wie man SSH zu einer Beanstalk-Instanz macht. Ich habe keinen privaten Schlüssel, da Beanstalk die Instanz in meinem Namen generiert hat.

Benno Waldmann
quelle
Also, wenn ich endlich angemeldet bin, wie komme ich zu dem Ordner, in den ich mein Git-Repo schiebe?
Entwickeln Sie den
Es scheint, dass die obigen Antworten etwas veraltet sind. Amazon hat ein gutes Dokument, wie es jetzt geht. Befolgen Sie die obigen Vorschläge zum Erstellen des Schlüsselpaars. Dann folgen Sie diesen Anweisungen : <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/… Viel Glück!
Jordan Michael Rushing
4
Nun, wenn Sie die neue eb ssh
Version 3

Antworten:

491

Ich fand es ein 2-stufiger Prozess. Dies setzt voraus, dass Sie bereits ein Schlüsselpaar für den Zugriff auf EC2-Instanzen in der entsprechenden Region eingerichtet haben.

Sicherheitsgruppe konfigurieren

  1. Öffnen Sie in der AWS-Konsole die Registerkarte EC2.
  2. Wählen Sie die entsprechende Region aus und klicken Sie auf Sicherheitsgruppe.
  3. Sie sollten eine elasticbeanstalk-defaultSicherheitsgruppe haben, wenn Sie eine Elastic Beanstalk-Instanz in dieser Region gestartet haben.
  4. Bearbeiten Sie die Sicherheitsgruppe, um eine Regel für den SSH-Zugriff hinzuzufügen. Im Folgenden wird es gesperrt, um nur das Eindringen von einer bestimmten IP-Adresse zuzulassen.

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Konfigurieren Sie die Umgebung Ihrer Elastic Beanstalk-Anwendung

  1. Wenn Sie noch kein Schlüsselpaar erstellt haben, erstellen Sie eines, indem Sie auf der Registerkarte ec2 unter Sicherheitsgruppe auf Schlüsselpaare klicken.
  2. Öffnen Sie in der AWS-Konsole die Registerkarte Elastic Beanstalk.
  3. Wählen Sie die entsprechende Region aus.
  4. Wählen Sie die entsprechende Umgebung aus
  5. Wählen Sie im linken Bereich Konfigurationen aus.
  6. Wählen Sie Sicherheit.
  7. Wählen Sie unter "EC2-Schlüsselpaar:" den Namen Ihres Schlüsselpaars im Existing Key PairFeld aus.

Nach dem Neustart der Instanz müssen Sie den Hostnamen von der Registerkarte AWS Console EC2-Instanzen oder über die API abrufen. Sie sollten dann in der Lage sein, auf den Server zu ssh.

$ ssh -i path/to/keypair.pub [email protected]

Hinweis: Um der Umgebungskonfiguration ein Schlüsselpaar hinzuzufügen, muss der Beendigungsschutz der Instanzen deaktiviert sein, da Beanstalk versuchen würde, die aktuellen Instanzen zu beenden und neue Instanzen mit dem KeyPair zu starten.

Hinweis: Wenn etwas nicht funktioniert, überprüfen Sie die Registerkarte "Ereignisse" in der Beanstalk-Anwendung / -Umgebung und finden Sie heraus, was schief gelaufen ist.

jabley
quelle
41
Diese Antwort hat 2x mehr Stimmen als jede andere Antwort; ist technisch streng; und extrem klar. Was ist daran falsch? Warum wird es nicht akzeptiert?
6
Wenn Sie die Fehlermeldung "Berechtigung verweigert (öffentlicher Schlüssel)" erhalten, obwohl Sie die obigen Anweisungen befolgt haben, kann Folgendes erklärt werden: Wenn Ihr EB-Setup mehr als eine EC2-Instanz startet, müssen Sie überprüfen, welcher von ihnen das zugeordnete Schlüsselpaar erhält es. Sie können nur mit dem Schlüsselpaar SSH an die Instanz senden. Sie können die Eigenschaften im EC2-Instanzmenü überprüfen, um dies herauszufinden.
Per Quested Aronsson
27
Die Schnittstelle hat sich hier möglicherweise geändert. Für mich waren die Schritte 4 und 5 im zweiten Abschnitt etwas anders. Ich musste die relevante Umgebung auswählen, um das Dashboard zu öffnen, und dann links 'Konfiguration' auswählen. Klicken Sie auf das Einstellungszahnradsymbol neben "Instanzen", um die Seite mit den Servereinstellungen aufzurufen. Ich konnte ein EC2-Schlüsselpaar aus einer Dropdown-Liste auswählen, was praktisch war. Vielen Dank für die tolle Antwort!
Dallin
12
Für den Befehl ssh müssen Sie die Datei mit dem privaten Schlüssel (.pem) und den Benutzernamen @ public_dns_name angeben (nicht den öffentlichen Schlüssel, wie die Antwort durch die Erweiterung .pub impliziert). Für Amazon Linux lautet der Standardbenutzername ec2-user. Bei RHEL5 lautet der Benutzername häufig root, kann jedoch ec2-user sein. Für Ubuntu lautet der Benutzername Ubuntu. Für SUSE Linux lautet der Benutzername root. Andernfalls wenden Sie sich an Ihren AMI-Anbieter. (Kredit: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
5
Diese Einstellung wurde auf die Registerkarte "Sicherheit" unter "Konfigurationen" verschoben (wählen Sie in Schritt 6 "Sicherheit" anstelle von "Instanzen")
delucasvb
128

Elastic Beanstalk CLI v3 unterstützt jetzt direktes SSH mit dem Befehl eb ssh. Z.B

eb ssh your-environment-name

Es ist nicht erforderlich, Sicherheitsgruppen einzurichten, um die Adresse der EC2-Instanz herauszufinden.

Es gibt auch diesen coolen Trick:

eb ssh --force

Dadurch wird Port 22 vorübergehend auf 0.0.0.0 geöffnet und bis Sie geöffnet bleiben exit. Dies vereint ein wenig die Vorteile der Top-Antwort, ohne den Ärger. Sie können vorübergehend jemand anderem als Ihnen Zugriff zum Debuggen gewähren und so weiter. Natürlich müssen Sie ihren öffentlichen Schlüssel noch auf den Host hochladen, damit sie Zugriff haben. Sobald Sie das tun (und solange Sie drinnen sind eb ssh), kann die andere Person

ssh [email protected]
Tal
quelle
2
Ich habe gerade CLI v3 selbst installiert und es funktioniert wunderbar. Zum Hinzufügen können Sie die Umgebung angeben, indem Sie sie an den Befehl anhängen, z eb ssh production. Sie können auch eine bestimmte Umgebung mit der Setup-Option eb ssh production --setup
einrichten
Hmmm nein, dies setzt voraus, dass Sie den privaten Schlüssel bereits in Ihrem ~ / .ssh-Verzeichnis haben. Einige Leute haben es, andere nicht. Wenn Sie dies nicht tun, müssen Sie noch eine erstellen, herunterladen und in EB einrichten.
Jorge Orpinel
49

Meine Erfahrung im August 2013 mit einem Linux-Client und einer einfachen AWS Beanstalk-Installation (einzelne EC2-Instanz) ist wie folgt (basierend auf dem obigen Community-Wiki)

Sicherheitsgruppe konfigurieren

  1. Wählen Sie in der AWS-Konsole EC2 aus, um zum EC2-Dashboard zu gelangen
  2. Ermitteln Sie die Sicherheitsgruppe, zu der Ihre EC2-Instanz gehört, indem Sie im linken Bereich auf Instanzen klicken und dann die Instanz auswählen, zu der Sie eine Verbindung herstellen möchten (in meinem Fall gibt es nur eine - die sogenannte Standardumgebung). Die Details werden am Ende der Seite angezeigt. - Sie sollten ein Feld für Sicherheitsgruppen sehen. Notieren Sie sich den Namen. In meinem Fall "awsweb ...".
  3. Wählen Sie im linken Bereich Sicherheitsgruppen aus.
  4. Wählen Sie die awsweb...Sicherheitsgruppe aus, und die Details sollten unten auf der Seite angezeigt werden
  5. Wählen Sie die Registerkarte Eingehend und wählen Sie SSH aus der Dropdown-Liste "Neue Regel erstellen". Geben Sie die IP-Adresse / CIDR Ihres lokalen Computers ein (von dem aus Sie eine Verbindung herstellen möchten), z. B. 192.168.0.12/32, und klicken Sie auf Regel hinzufügen und Regeländerungen anwenden.

Erstellen Sie ein öffentlich-privates Schlüsselpaar

  1. Wählen Sie im EC2-Dashboard im linken Bereich Schlüsselpaare aus
  2. Klicken Sie auf Schlüsselpaar (oben) und geben Sie einen Namen wie myname-key-pair-myregion oder einen beliebigen gültigen Schlüsselnamen ein.
  3. Bestätigen Sie den Download des privaten Schlüssels vom Browser und akzeptieren Sie ihn. Speichern Sie ihn beispielsweise in Ihrem Home-Verzeichnis oder wo immer Sie möchten. Stellen Sie sicher, dass das Verzeichnis nur Schreibberechtigungen für Sie hat.

Verknüpfen Sie das Public Private Key-Paar mit dem Elastic Beanstalk EC2-Server

  1. So fügen Sie einer Elastic Beanstalk EC2-Instanz ein öffentlich-privates Schlüsselpaar hinzu: Dienste -> Elastic Beanstalk -> Meine App -> Standardumgebung führt Sie zur Standardumgebung (die, in die Sie Ihre App hochladen).
  2. Klicken Sie auf Konfiguration (auf der linken Seite) und dann auf das Zahnrad / Zahnrad, das "Instanzen" zugeordnet ist.
  3. Eine Seite mit dem Titel "Server" wird angezeigt
  4. Wählen Sie Ihren vorgefertigten Schlüssel aus dem EC2-Schlüsselpaar aus und speichern Sie
  5. Es wird eine Warnmeldung angezeigt. Speichern Sie dies erneut.

Stellen Sie über SSH eine Verbindung zur AWS EC2-Instanz her

  1. Wechseln Sie in einer Terminalsitzung in das Verzeichnis, das Ihren privaten Schlüssel enthält (PEM-Datei).
  2. Wenn Sie ein paar Versuche unternommen haben, sollten Sie wahrscheinlich etwas gegen .ssh / unknown_hosts unternehmen, wenn Sie eines haben, z. B. das Umbenennen. Andernfalls wird möglicherweise eine Fehlermeldung angezeigt, dass sich die Identität des Hosts geändert hat.
  3. Führen Sie Folgendes aus: ssh -i ./myname-key-pair-my-region.pem [email protected]

Viel Glück

mikemay
quelle
3
Für den Befehl ssh müssen Sie die private Schlüsseldatei (.pem) und den Benutzernamen @ public_dns_name angeben. Für Amazon Linux lautet der Standardbenutzername ec2-user. Bei RHEL5 lautet der Benutzername häufig root, kann jedoch ec2-user sein. Für Ubuntu lautet der Benutzername Ubuntu. Für SUSE Linux lautet der Benutzername root. Andernfalls wenden Sie sich an Ihren AMI-Anbieter. (Kredit: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
Yacc
Diese Frage bietet die beste Erklärung für das Hinzufügen des Schlüsselpaarteils. Aber ich mochte es, das eb-cli zu verwenden, um den SSH-Teil zu erledigen, da es einfacher ist. Trotzdem habe ich auch diesen positiv bewertet.
Nick
35

Ich habe auch damit gespielt.

  1. Gehen Sie zu Ihrem elastischen Bohnenstangen-Service-Tab
  2. Gehen Sie in Ihrer Anwendungsübersicht zu Aktion -> Konfiguration bearbeiten
  3. Fügen Sie den Namen eines Schlüssels, wie er auf Ihrer Registerkarte EC2 (für dieselbe Region) angezeigt wird, zum vorhandenen Schlüsselpaarfeld hinzu und klicken Sie auf Änderungen übernehmen

Der Service wird neu gestartet, machen Sie also einen Kaffee für 5 Minuten

Auf Ihrer Registerkarte ec2 für dieselbe Region sehen Sie Ihre neue laufende Instanz. ssh zum öffentlichen DNS-Namen als ec2-Benutzer unter Verwendung des in 3 hinzugefügten Schlüssels, z. B. ssh [email protected]

Ray Vahey
quelle
5
Das Hinzufügen des Teils "ec2-user" war mein Problem ... Dies sollte mit der obigen Antwort zusammengeführt werden;).
Kirill Fuchs
30

Für die EC2-Instanz gibt es im Menü "Instanzaktionen" eine praktische Option "Verbinden". Sie erhalten den genauen SSH-Befehl, den Sie mit der richtigen URL für die Instanz ausführen können. Die allgemeinen Anweisungen von Jabley sind korrekt.

Peter
quelle
24

Die obigen Antworten sind etwas alt.

Erstellen Sie zuerst ein Schlüsselpaar und hängen Sie es dann an die Elastic Beanstalk-Umgebung an.

Schritte zum Erstellen eines Schlüsselpaars

  1. Melden Sie sich bei AWS an
  2. Dienstleistungen -> EC2
  3. Wählen Sie links unter NETWORK & SECURITY Schlüsselpaare aus
  4. Wählen Sie Neues Schlüsselpaar erstellen, geben Sie den Schlüsselnamen ein und klicken Sie auf Erstellen. Der Schlüssel wird automatisch auf Ihr System heruntergeladen.

Schritte zum Anhängen des erstellten Schlüsselpaars an die Elastic Beanstalk-Umgebung

  1. AWS -> Services -> Elastic Beanstalk

  2. Wählen Sie Ihre Umgebung aus und klicken Sie links auf die Konfiguration.

  3. Wählen Sie in der Konfigurationsübersicht unter Sicherheit die Option Ändern aus.

  4. Wählen Sie unter Berechtigungen für virtuelle Maschinen das von uns erstellte Schlüsselpaar aus.

  5. Klicken Sie auf Speichern und dann auf Konfiguration speichern.

Es wird einige Zeit dauern, bis Ihre EC2-Instanz angezeigt wird.

singh30
quelle
3

Sie müssen eine direkte Verbindung zur ec2-Instanz über ihre öffentliche IP-Adresse herstellen. Sie können keine Verbindung mit der URL für elastische Bohnenstiele herstellen.

Sie finden die IP-Adresse der Instanz, indem Sie sie in der ec2-Konsole nachschlagen.

Sie müssen auch sicherstellen, dass Port 22 geöffnet ist. Standardmäßig schließt die EB-CLI Port 22, nachdem eine SSH-Verbindung hergestellt wurde. Sie können eb ssh -o aufrufen, um den Port nach Abschluss der ssh-Sitzung offen zu halten.

Warnung: Sie sollten wissen, dass elastische Bohnenstange Ihre Instanz jederzeit ersetzen kann. Der Zustand ist für keine Ihrer elastischen Bohnenstangeninstanzen garantiert. Es ist wahrscheinlich besser, ssh nur zu Test- und Debugging-Zwecken zu verwenden, da alles, was Sie ändern, jederzeit verschwinden kann.

Siddharth Sharma
quelle
2

Die Richtung zum Festlegen des Schlüsselpaars für eine ElasticBeanstalk ec2-Instanz mit der aktuellen Benutzeroberfläche lautet: Warnung: Dies erfordert eine Aktualisierung der EC2-Instanzen in Ihrer ElasticBeanstalk-App. Hinweis: Zuvor müssen Sie im EC2-Dashboard ein Schlüsselpaar erstellt haben.

1) Wählen Sie im AWS Dashboard den ElasticBeanstalk-Dienst aus. 2) Wählen Sie die Anwendung aus, die Sie verwenden möchten. 3) Wählen Sie 'Konfiguration'. 4) Wählen Sie das Zahnradsymbol (Einstellungen) im Konfigurationsfeld 'Instanzen'. 5) Hiermit gelangen Sie zu einer Seite mit dem Titel "Server", auf der Sie das Dropdown-Feld "EC2-Schlüsselpaar" mit Ihrem gewünschten Schlüsselpaar aktualisieren und "Speichern" auswählen können.

Zu beachten ist, dass dies möglicherweise nicht für Anwendungen mit mehreren Instanzen funktioniert (aber ich glaube, es ist wahrscheinlich, wenn sich alle in derselben Region wie das Schlüsselpaar befinden).

Adamjk
quelle
1

Ich bin hierher gekommen, um nach einer Möglichkeit zu suchen, einer Instanz, die Beanstalk während der Bereitstellung erstellt, einen Schlüssel hinzuzufügen (wir verwenden Terraform). In Terraform können Sie Folgendes tun:

resource "aws_elastic_beanstalk_environment" "your-beanstalk" {
   ... 
   setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name      = "EC2KeyName"
      value     = "${aws_key_pair.your-ssh-key.key_name}"
   }
   ...
}

Sie können diesen Schlüssel dann für SSH in die Box verwenden.

Maikon
quelle
1

Wenn Sie die CLI mithilfe eb initIhrer Umgebung eingerichtet haben, sollte dies so einfach sein wie

eb ssh --setup Auf diese Weise können Sie ein neues Schlüsselpaar erstellen oder ein vorhandenes verwenden, falls vorhanden.

Möglicherweise können Sie auch einfach eine Verbindung mit der vorhandenen Umgebung herstellen, eb useobwohl ich das noch nicht getan habe.

Weitere Informationen zur Installation der CLI finden Sie unter https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install

Andrew Waites
quelle
1

Auf dem Mac können Sie die CLI mit Brew installieren:

brew install awsebcli

Mit dem Kommandozeilen-Tool können Sie dann ssh mit:

eb ssh environment-name

und auch andere Operationen durchführen. Dies setzt voraus, dass Sie eine Sicherheitsgruppe hinzugefügt haben, die ssh von Ihrer IP-Adresse aus zulässt.

FabricioG
quelle
0

Abhängig von Ihrer Umgebungskonfiguration haben Sie möglicherweise keine öffentliche IP-Adresse auf der EC2-Instanz, die für Ihre Umgebung erstellt wurde. Sie können überprüfen durch:

  1. Gehen Sie zur EC2-Konsole
  2. Suchen Sie Ihre Instanz und überprüfen Sie die Beschreibung Registerkarte
  3. Wenn es keine öffentliche IP gibt ...
  4. Klicken Sie auf Elastic IPs in der Navigation auf
  5. Klicken Neue Adresse zuweisen
  6. Wählen Sie Amazon für den Pool
  7. Klicken Sie auf Zuweisen

Wählen Sie abschließend Ihre neue EIP aus und wählen Sie im Aktionsmenü die Option Adresse zuordnen. Verknüpfen Sie diese IP mit Ihrer EC2-Instanz. Sie sollten in der Lage sein, eine Verbindung mit herzustelleneb ssh .

Sie können die Verbindungsdetails zurücksetzen, indem Sie ausführen eb ssh --setup.

Matthew Carriere
quelle
-5

Ich bin vor einiger Zeit auch auf das gleiche Problem gestoßen. Ich wollte die Schlüsseldatei verwenden, aber Amazon sagt irgendwo, dass Sie einem vorhandenen EC2-Server keine Schlüsseldatei hinzufügen können. Für die erste Beanstalk-Anwendung konfiguriert Amazon die Anwendung für Sie vor. Sie müssen eine neue Anwendung erstellen und den EC2-Server, auf dem die Beanstalk-App ausgeführt wird, so konfigurieren, dass eine alte PEM-Datei (ppk bei Verwendung von Putty) verwendet wird, oder Sie können eine neue erstellen. Jetzt sollten Sie in der Lage sein, SSH.

Geben Sie hier die Bildbeschreibung ein

Konfigurieren Sie dann Ihre alte App und löschen Sie sie.

ashraj98
quelle
3
Das ist falsch. Sie können einer vorhandenen Beanstalk-App eine Schlüsseldatei hinzufügen. Es wird sich selbst töten / wieder aufbauen. Sie müssen keine Anwendungen selbst löschen / erstellen.
Nate