wake-up-neo.com

SSH-Instanz zu Elastic Beanstalk

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

256
Benno Waldmann

Ich fand es ein zweistufiger 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 relevante Region aus und klicken Sie auf Sicherheitsgruppe.
  3. Sie sollten eine elasticbeanstalk-default-Sicherheitsgruppe haben, wenn Sie in dieser Region eine Elastic Beanstalk-Instanz gestartet haben.
  4. Bearbeiten Sie die Sicherheitsgruppe, um eine Regel für den SSH-Zugriff hinzuzufügen. Die unten stehenden Informationen sperren den Code, um nur den Eintritt 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 relevante Region aus.
  4. Wählen Sie die relevante Umgebung aus
  5. Wählen Sie im linken Bereich Konfigurationen aus.
  6. Wählen Sie Instanzen aus.
  7. Wählen Sie unter "EC2-Schlüsselpaar:" den Namen Ihres Schlüsselpaares im Feld Existing Key Pair aus. 

Nachdem die Instanz neu gestartet wurde, müssen Sie den Hostnamen von der Registerkarte AWS Console EC2-Instanzen oder über die API abrufen. Sie sollten dann in der Lage sein, SSH auf dem Server auszuführen.

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

Hinweis: Zum Hinzufügen eines Schlüsselpaares zur Umgebungskonfiguration muss der Beendigungsschutz der Instanzen deaktiviert sein, da Beanstalk versucht, 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 gegangen ist.

415
jabley

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

eb ssh your-environment-name

Es ist nicht nötig, alle Sicherheitslücken 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 bleibt geöffnet, bis Sie exit sind. Dies kombiniert ein bisschen von den Vorteilen der Top-Antwort, ohne den Aufwand. Sie können vorübergehend einer anderen Person als Ihnen Zugriff für das Debugging gewähren. Natürlich müssen Sie immer noch ihren öffentlichen Schlüssel zum Host hochladen, damit sie Zugriff haben. Sobald Sie das getan haben (und solange Sie in eb ssh sind), kann die andere Person dies tun

ssh [email protected]
111
Tal

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

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 Fensterbereich auf Instances klicken und dann die Instanz auswählen, zu der Sie eine Verbindung herstellen möchten (in meinem Fall gibt es nur eine - die Default-Umgebung -). Die Details werden am unteren Rand 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 Sicherheitsgruppe awsweb... aus. Die Details sollten am unteren Rand 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 (von dem aus Sie eine Verbindung herstellen möchten) ein, z. 192.168.0.12/32 und klicken Sie auf Regel hinzufügen und Regeländerungen anwenden.

Öffentlich-privates Schlüsselpaar erstellen

  1. Wählen Sie im EC2-Dashboard im linken Bedienfeld Key Pairs aus
  2. Klicken Sie oben auf Schlüsselpaar, und geben Sie einen Namen ein, z. B. meinyname-Schlüsselpaar, mein Bereich oder den beliebigen gültigen Schlüsselnamen.
  3. Bestätigen Sie den Download des privaten Schlüssels vom Browser und akzeptieren Sie ihn, indem Sie ihn zum Beispiel in Ihrem Home-Verzeichnis speichern oder wo immer Sie möchten. Stellen Sie sicher, dass das Verzeichnis nur über Schreibberechtigungen für Sie verfügt.

Ordnen Sie das Public Private Key-Paar dem Elastic Beanstalk EC2-Server zu

  1. Um ein Public-Private-Key-Paar zu einer Elastic Beanstalk-EC2-Instanz hinzuzufügen, gehen Sie wie folgt vor: Services -> Elastic Beanstalk -> Meine Anwendung -> Standard .__ Ihre App)
  2. Klicken Sie auf Konfiguration (im linken Bedienfeld) 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üsselwert aus dem EC2-Schlüsselpaar aus und speichern Sie
  5. Es wird eine Warnmeldung angezeigt, also speichern Sie erneut.

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

  1. Wechseln Sie in einer Terminalsitzung in das Verzeichnis, in dem sich Ihr privater Schlüssel befindet (PEM-Datei).
  2. Wenn Sie ein paar Schritte unternommen haben, sollten Sie wahrscheinlich etwas gegen .ssh/known_hosts unternehmen, wenn Sie eines haben, z. B. umbenennen. Andernfalls erhalten Sie möglicherweise eine Fehlermeldung, dass sich die Identität des Hosts geändert hat.
  3. Do: ssh -i ./myname-key-pair-my-region.pem [email protected]

Viel Glück

44
mikemay

Für die EC2-Instanz gibt es im Menü "Instanzaktionen" eine praktische Option "Verbinden". Sie erhalten genau den SSH-Befehl, der mit der richtigen URL für die Instanz ausgeführt werden soll. Die allgemeinen Anweisungen von Jabley sind korrekt.

28
Peter

Ich habe auch damit gespielt.

  1. gehen Sie zu Ihrem elastischen Beanstalk-Service-Tab
  2. in Ihrer Anwendungsübersicht gehen Sie zu Aktion -> Konfiguration bearbeiten
  3. fügen Sie den Namen eines Schlüssels, wie er auf Ihrer EC2-Registerkarte (für dieselbe Region) angezeigt wird, zum vorhandenen Schlüsselpaar hinzu, und klicken Sie auf Apply changes

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

Auf Ihrem ec2-Tab für dieselbe Region sehen Sie Ihre neue laufende Instanz . Ssh als ec2-user mit dem in 3 Hinzugefügten Schlüssel zum öffentlichen DNS-Namen. Beispiel Ssh ec2-user @ ec2- xx-xxx-xx-xxx.compute-1.amazonaws.com

26
Ray Vahey

Die obigen Antworten sind etwas alt.

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

Schritte zum Erstellen eines Schlüsselpaares

  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 aus, geben Sie den Schlüsselnamen ein und klicken Sie auf Erstellen .. Der Schlüssel wird automatisch auf Ihr System heruntergeladen.

Schritte zum Anlegen des erstellten Schlüsselpaares an die Elastic Beanstalk-Umgebung

  1. AWS -> Dienste -> Elastische Bohnenstange

  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 Virtuelle Maschinenberechtigungen das von uns erstellte Schlüsselpaar aus.

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

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

13
singh30

Wenn Sie Elastic Bean und EB CLI verwenden, verwenden Sie einfach eb ssh, um sich bei der Instanz anzumelden. Sie können Optionen verwenden, die im folgenden Link angegeben sind :__. http://docs.aws.Amazon.com/elasticbeanstalk/latest/dg/eb3-ssh.html

9
Aditya Pandhare

Sie müssen eine direkte Verbindung zur ec2-Instanz unter Verwendung der öffentlichen IP-Adresse herstellen. Sie können keine Verbindung mit der URL für die elastische Bohnenstange herstellen.

Die Instanz-IP-Adresse finden Sie in der ec2-Konsole.

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 anrufen, um den Port nach Abschluss der ssh-Sitzung offen zu halten.

Warnung: Sie sollten wissen, dass der elastische Bohnenstiel Ihre Instanz jederzeit ersetzen kann. Der Zustand ist bei keinem Ihrer elastischen Beanstalk-Instanzen garantiert. Es ist wahrscheinlich besser, ssh nur zum Testen und Debuggen zu verwenden, da alles, was Sie ändern, jederzeit verloren gehen kann.

3

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

1) Wählen Sie in 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) in der Konfiguration 'Instanzen' aus Feld . 5) Sie gelangen auf eine 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 für Anwendungen mit mehreren Instanzen möglicherweise nicht funktioniert (ich glaube jedoch, dass sie wahrscheinlich alle in derselben Region liegen wie das Schlüsselpaar).

2
adamjk

Ich bin hier hergekommen, 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.

0
Maikon

Abhängig von Ihrer Umgebungskonfiguration haben Sie möglicherweise keine öffentliche IP-Adresse in 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 nach Ihrer Instanz und prüfen Sie die Registerkarte Description
  3. Wenn es keine öffentliche IP gibt ... 
  4. Klicken Sie in der Navigation auf Elastic IPs
  5. Klicken Sie auf Neue Adresse zuweisen.
  6. Wählen Sie Amazon für den Pool
  7. Klicken Sie auf Allocate.

Wählen Sie schließlich Ihr neues EIP aus und wählen Sie im Aktionsmenü Adresse zuordnen. Ordnen Sie diese IP Ihrer EC2-Instanz zu. Sie sollten jetzt mit eb ssh eine Verbindung herstellen können. 

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

0