SSH do instancji Elastic Beanstalk

304

Właśnie zapisałem się na nową ofertę Amazon Elastic Beanstalk. Nie mogę zrozumieć, jak połączyć się z instancją Beanstalk. Nie mam klucza prywatnego, ponieważ Beanstalk wygenerował instancję w moim imieniu.

Benno Waldmann
źródło
Więc kiedy w końcu się zaloguję, jak mogę dostać się do folderu, do którego wysyłam repozytorium git?
Ewolucja
Wygląda na to, że powyższe odpowiedzi są nieco przestarzałe. Amazon ma dobry dokument, jak to zrobić teraz. Postępuj zgodnie z powyższymi sugestiami dotyczącymi tworzenia pary kluczy. Następnie wykonaj następujące czynności: <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/... Powodzenia!
Jordan Michael Rushing
4
Cóż, jeśli używasz nowej wersji eb ssh
ELI

Odpowiedzi:

491

Odkryłem, że jest to proces dwuetapowy. Zakłada się, że skonfigurowano już parę kluczy umożliwiającą dostęp do instancji EC2 w odpowiednim regionie.

Skonfiguruj grupę zabezpieczeń

  1. W konsoli AWS otwórz kartę EC2.
  2. Wybierz odpowiedni region i kliknij Security Group.
  3. Powinieneś mieć grupę elasticbeanstalk-defaultzabezpieczeń, jeśli uruchomiłeś instancję Elastic Beanstalk w tym regionie.
  4. Edytuj grupę zabezpieczeń, aby dodać regułę dostępu SSH. Poniżej zablokuje to, aby umożliwić wejście tylko z określonego adresu IP.

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Skonfiguruj środowisko aplikacji Elastic Beanstalk

  1. Jeśli nie masz jeszcze pary kluczy, utwórz ją, klikając Pary par poniżej Security Group na karcie ec2.
  2. W konsoli AWS otwórz kartę Elastic Beanstalk.
  3. Wybierz odpowiedni region.
  4. Wybierz odpowiednie środowisko
  5. Wybierz Konfiguracje w lewym okienku.
  6. Wybierz Zabezpieczenia.
  7. W obszarze „Para kluczy EC2:” wybierz w polu nazwę swojej pary kluczy Existing Key Pair.

Po ponownym uruchomieniu instancji musisz uzyskać nazwę hosta z karty instancji ECS konsoli AWS EC2 lub za pośrednictwem interfejsu API. Powinieneś wtedy mieć możliwość ssh na serwerze.

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

Uwaga: Aby dodać parę kluczy do konfiguracji środowiska, ochrona przed zakończeniem instancji musi być wyłączona, ponieważ Beanstalk próbowałby zakończyć bieżące instancje i uruchomić nowe instancje za pomocą KeyPair.

Uwaga: Jeśli coś nie działa, sprawdź zakładkę „Zdarzenia” w aplikacji / środowiskach Beanstalk i dowiedz się, co poszło nie tak.

jabley
źródło
41
Ta odpowiedź ma 2x więcej głosów niż jakakolwiek inna odpowiedź; jest technicznie rygorystyczny; i bardzo jasne. Co jest z tym nie tak? Dlaczego nie jest akceptowany?
6
Jeśli pojawi się błąd „Odmowa zezwolenia (publickey)”, mimo że postępujesz zgodnie z powyższymi instrukcjami, poniższe informacje mogą wyjaśnić, dlaczego: Jeśli konfiguracja EB uruchamia więcej niż jedną instancję EC2, musisz sprawdzić, która z nich otrzymuje parę kluczy powiązaną z to. Możesz SSH tylko do instancji za pomocą pary kluczy. Możesz sprawdzić właściwości w menu instancji EC2, aby się dowiedzieć.
Per Quested Aronsson
27
Interfejs mógł się tutaj zmienić. Dla mnie kroki 4 i 5 w drugiej części były nieco inne. Musiałem wybrać odpowiednie środowisko, aby otworzyć pulpit, a następnie wybrać „Konfiguracja” po lewej stronie. Kliknij ikonę koła zębatego ustawień obok pozycji „Instancje”, która wyświetla stronę ustawień serwera. Byłem w stanie wybrać parę kluczy EC2 z listy rozwijanej, co było wygodne. Dzięki za świetną odpowiedź!
Dallin
12
W przypadku polecenia ssh musisz podać plik klucza prywatnego (.pem) i nazwę użytkownika @ nazwa_domeny_ publicznej (nie klucz publiczny, jak sugeruje odpowiedź rozszerzenie .pub). W systemie Amazon Linux domyślną nazwą użytkownika jest ec2-user. W przypadku RHEL5 nazwą użytkownika jest często root, ale może to być użytkownik ec2. W systemie Ubuntu nazwa użytkownika to ubuntu. W przypadku SUSE Linux nazwą użytkownika jest root. W przeciwnym razie skontaktuj się z dostawcą AMI. (kredyt: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
5
To ustawienie zostało przeniesione do zakładki „Zabezpieczenia” w „Konfiguracjach” (więc w kroku 6 wybierz „Zabezpieczenia” zamiast „Instancji”)
delucasvb 27.04.18
128

Interfejs CLI v3 elastycznej fasoli obsługuje teraz bezpośredni SSH za pomocą polecenia eb ssh. Na przykład

eb ssh your-environment-name

Nie ma potrzeby instalowania grup zabezpieczeń w celu znalezienia adresu wystąpienia EC2.

Jest też ta fajna sztuczka:

eb ssh --force

To tymczasowo zmusi port 22 do otwarcia do 0.0.0.0 i pozostanie otwarty do Ciebie exit. Łączy to w sobie zalety pierwszej odpowiedzi, bez kłopotów. Możesz tymczasowo przyznać dostęp komuś innemu niż Ty na debugowanie i tak dalej. Oczywiście nadal musisz przesłać klucz publiczny do hosta, aby mieli dostęp. Gdy to zrobisz (i tak długo, jak będziesz w środku eb ssh), druga osoba może

ssh [email protected]
Tal
źródło
2
Właśnie zainstalowałem CLI v3 i to działa pięknie. Aby dodać, możesz określić środowisko, dołączając je do polecenia, np eb ssh production. Możesz również skonfigurować określone środowisko z opcją instalacji:eb ssh production --setup
jmera
Hmmm nie, to wymaga posiadania klucza prywatnego już w katalogu ~ / .ssh. Niektórzy ludzie to mają, inni nie. Jeśli tego nie zrobisz, nadal musisz go utworzyć, pobrać i skonfigurować w EB.
Jorge Orpinel,
49

Moje doświadczenia w sierpniu 2013 r. Z klientem linux i prostą instalacją AWS Beanstalk (pojedyncze wystąpienie EC2) są następujące (na podstawie Community Wiki powyżej)

Skonfiguruj grupę zabezpieczeń

  1. W konsoli AWS wybierz EC2, aby przejść do pulpitu nawigacyjnego EC2
  2. Odkryj grupę zabezpieczeń, do której należy twoje wystąpienie EC2, klikając Wystąpienia w lewym panelu, a następnie wybierając wystąpienie, z którym chcesz się połączyć (w moim przypadku jest tylko jedno - zwane Domyślnym środowiskiem). Szczegóły są pokazane u podstawy strony - Powinieneś zobaczyć pole Grup bezpieczeństwa - zanotuj nazwę - w moim przypadku „awsweb ...”.
  3. Z lewego panelu wybierz Grupy bezpieczeństwa.
  4. Wybierz awsweb...grupę zabezpieczeń, a szczegóły powinny pojawić się u podstawy strony
  5. Wybierz kartę Przychodzące i wybierz SSH z listy rozwijanej „Utwórz nową regułę”. Wprowadź adres IP / CIDR komputera lokalnego (z którego zamierzasz się połączyć), np. 192.168.0.12/32, i kliknij Dodaj regułę i Zastosuj zmiany reguł.

Utwórz parę kluczy publiczny-prywatny

  1. Z pulpitu nawigacyjnego EC2 wybierz Pary kluczy z lewego panelu
  2. Kliknij opcję Para kluczy (u góry) i wprowadź nazwę, na przykład myname-key-pair-myregion lub dowolną prawidłową nazwę klucza, którą chcesz.
  3. Potwierdź, a następnie zaakceptuj pobranie klucza prywatnego z przeglądarki, zapisując go na przykład w katalogu domowym lub w dowolnym miejscu. Upewnij się, że katalog ma tylko uprawnienia do zapisu.

Skojarz parę publicznego klucza prywatnego z serwerem Elastic Beanstalk EC2

  1. Aby dodać parę kluczy publiczny-prywatny do instancji Elastic Beanstalk EC2 wykonaj: Usługi -> Elastic Beanstalk -> Moja aplikacja -> Domyślne środowisko przenosi Cię do środowiska domyślnego (tego, w którym przesyłasz aplikację)
  2. Kliknij opcję Konfiguracja (na lewym panelu), a następnie koło zębate / trybik skojarzony z „Instancjami”
  3. Zostanie wyświetlona strona zatytułowana „Serwer”
  4. Wybierz fabrycznie ustawiony klucz z pary kluczy EC2 i zapisz
  5. Wyświetlany jest komunikat ostrzegawczy, więc zrób ponownie Zapisz.

Połącz się z wystąpieniem AWS EC2 za pomocą SSH

  1. W sesji terminalu przejdź do katalogu zawierającego klucz prywatny (plik .pem).
  2. Jeśli miałeś na to kilka okazji, prawdopodobnie powinieneś coś zrobić z .ssh / known_hosts, jeśli masz taki, jak zmiana jego nazwy. W przeciwnym razie może pojawić się błąd dotyczący zmiany tożsamości hosta.
  3. Wykonaj: ssh -i ./myname-key-pair-my-region.pem [email protected]

Powodzenia

mikemay
źródło
3
W przypadku polecenia ssh musisz podać plik klucza prywatnego (.pem) i nazwę użytkownika @ nazwa_domeny publicznej. W systemie Amazon Linux domyślną nazwą użytkownika jest ec2-user. W przypadku RHEL5 nazwą użytkownika jest często root, ale może to być użytkownik ec2. W systemie Ubuntu nazwa użytkownika to ubuntu. W przypadku SUSE Linux nazwą użytkownika jest root. W przeciwnym razie skontaktuj się z dostawcą AMI. (kredyt: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
To pytanie ma najlepsze wytłumaczenie dla dodawania części pary kluczy. Ale lubiłem używać eb-cli do wykonywania części SSH, ponieważ jest to prostsze. Mimo to też głosowałem za tym.
Nick
35

Bawiłem się również tym.

  1. Mam elastyczną zakładkę usługi łodyg fasoli
  2. na temat przeglądu aplikacji goto action -> edytuj konfigurację
  3. dodaj nazwę klucza wyświetlaną na karcie EC2 (dla tego samego regionu) do istniejącej skrzynki kluczy i naciśnij Zastosuj zmiany

Usługa zostanie uruchomiona ponownie, więc zrób kawę przez 5 minut

Na karcie ec2 dla tego samego regionu zobaczysz nową działającą instancję. ssh do publicznej nazwy dns jako użytkownik ec2 za pomocą klucza dodanego w 3 np. ssh [email protected]

Ray Vahey
źródło
5
Moim problemem było dodanie części „użytkownik ec2”. Powinno to zostać połączone z powyższą odpowiedzią;).
Kirill Fuchs
30

Istnieje przydatna opcja „Połącz” w menu „Działania instancji” dla instancji EC2. Da ci dokładne polecenie SSH do wykonania z poprawnym adresem URL dla instancji. Ogólne instrukcje Jabley są prawidłowe.

Piotr
źródło
24

Powyższe odpowiedzi są nieco stare.

Najpierw utwórz parę kluczy, a następnie dołącz ją do środowiska Elastic Beanstalk.

Kroki tworzenia pary kluczy

  1. Zaloguj się do AWS
  2. Usługi -> EC2
  3. Po lewej w obszarze SIEĆ I BEZPIECZEŃSTWO wybierz pary kluczy
  4. Wybierz Utwórz nową parę kluczy, wpisz nazwę klucza i kliknij Utwórz. Klucz zostanie automatycznie pobrany do twojego systemu.

Kroki dołączania utworzonej pary kluczy do środowiska Elastic Beanstalk

  1. AWS -> Usługi -> Elastyczna łodyga fasoli

  2. Wybierz środowisko i kliknij konfigurację po lewej stronie.

  3. W przeglądzie konfiguracji wybierz zmodyfikuj z Security.

  4. W obszarze Uprawnienia do maszyny wirtualnej wybierz utworzoną przez nas parę kluczy.

  5. Kliknij przycisk Zapisz, a następnie Zapisz konfigurację.

Zastanowienie się nad instancją EC2 zajmie trochę czasu.

singh30
źródło
3

Musisz połączyć się z instancją ec2 bezpośrednio przy użyciu jej publicznego adresu IP. Nie można połączyć się za pomocą adresu URL elasticbeanstalk.

Możesz znaleźć adres IP instancji, wyszukując go w konsoli ec2.

Musisz także upewnić się, że port 22 jest otwarty. Domyślnie EB CLI zamyka port 22 po zakończeniu połączenia ssh. Możesz wywołać eb ssh -o, aby pozostawić port otwarty po zakończeniu sesji ssh.

Ostrzeżenie: powinieneś wiedzieć, że elastyczna łodyga fasoli może w każdej chwili zastąpić Twoją instancję. Nie można zagwarantować stanu w żadnej z instancji elastycznej łodygi fasoli. Prawdopodobnie lepiej używać ssh tylko do testowania i debugowania, ponieważ wszystko, co zmodyfikujesz, może zniknąć w dowolnym momencie.

Siddharth Sharma
źródło
2

Kierunek ustawiania pary kluczy dla instancji ElasticBeanstalk ec2 z bieżącym interfejsem użytkownika: Ostrzeżenie: Będzie to wymagało aktualizacji instancji EC2 w aplikacji ElasticBeanstalk. Uwaga: Przed tym konieczne będzie utworzenie pary kluczy w desce rozdzielczej EC2.

1) W panelu AWS wybierz usługę ElasticBeanstalk 2) Wybierz aplikację, której chcesz użyć. 3) Wybierz „Konfiguracja” 4) Wybierz ikonę koła zębatego (ustawienia) w polu konfiguracji „Instancje”. 5) Nastąpi przejście do strony zatytułowanej „Serwer”, na której możesz zaktualizować pole rozwijane „Para kluczy EC2” o żądaną parę kluczy i wybrać opcję „Zapisz”.

Należy zauważyć, że może to nie działać w przypadku aplikacji z wieloma instancjami (ale wydaje mi się prawdopodobne, że wszystkie znajdują się w tym samym regionie co para kluczy).

adamjk
źródło
1

Przybyłem tutaj, aby znaleźć sposób na dodanie klucza do instancji, którą tworzy Beanstalk podczas udostępniania (używamy Terraform). W Terraform możesz wykonać następujące czynności:

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

Następnie możesz użyć tego klucza do SSH w polu.

Maikon
źródło
1

Jeśli skonfigurowałeś interfejs CLI eb initw swoim środowisku, powinien on być tak prosty jak

eb ssh --setup co pozwoli ci utworzyć nową parę kluczy lub użyć istniejącej, jeśli taka istnieje.

Możesz także być w stanie połączyć się z istniejącym środowiskiem, eb usechociaż tego nie zrobiłem.

Szczegółowe informacje na temat instalowania interfejsu CLI - https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install

Andrew Waites
źródło
1

Na Macu możesz zainstalować cli przy użyciu brew:

brew install awsebcli

Za pomocą narzędzia wiersza poleceń możesz następnie ssh za pomocą:

eb ssh environment-name

a także wykonywać inne operacje. Zakłada się, że dodałeś grupę zabezpieczeń, która pozwala ssh z twojego adresu IP.

FabricioG
źródło
0

W zależności od konfiguracji środowiska użytkownik może nie mieć publicznego adresu IP w instancji EC2 utworzonej dla tego środowiska. Możesz to sprawdzić:

  1. Idź do konsoli EC2
  2. Znajdź swoje wystąpienie i sprawdź opis kartę
  3. Jeśli nie ma publicznego adresu IP ...
  4. Kliknij Elastyczne adresy IP w Nawigacji
  5. Kliknij Przydziel nowy adres
  6. Wybierz Amazon dla puli
  7. Kliknij Przydziel

Na koniec wybierz nowy EIP i wybierz opcję Powiąż adres z menu akcji. Powiąż ten adres IP z instancją EC2. Powinieneś być w stanie połączyć się za pomocąeb ssh teraz.

Możesz zresetować szczegóły połączenia, uruchamiając eb ssh --setup.

Matthew Carriere
źródło
-5

Jakiś czas temu spotkałem ten sam problem. Chciałem użyć pliku klucza, ale Amazon mówi gdzieś, że nie można dodać pliku klucza do istniejącego serwera EC2. W przypadku pierwszej aplikacji Beanstalk Amazon wstępnie ją skonfiguruje. Musisz utworzyć nową aplikację i możesz skonfigurować serwer EC2, na którym działa aplikacja Beanstalk, do korzystania ze starego pliku pem (ppk, jeśli używasz Putty), lub możesz utworzyć nowy. Teraz powinieneś być w stanie SSH.

wprowadź opis zdjęcia tutaj

Następnie skonfiguruj, a następnie usuń starą aplikację.

ashraj98
źródło
3
To jest źle. Możesz dodać plik klucza do istniejącej aplikacji Beanstalk. Zabije się / odbuduje. Nie musisz samodzielnie usuwać / tworzyć aplikacji.
Nate