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.


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 ec2-user@ec2-an-ip-address.compute-1.amazonaws.com

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.


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 ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com

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 ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com

Powodzenia


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 ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com


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.


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.



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.


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).


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.


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


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.


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.


-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ę.


3
To jest źle. Możesz dodać plik klucza do istniejącej aplikacji Beanstalk. Zabije się / odbuduje. Nie musisz samodzielnie usuwać / tworzyć aplikacji.
— Nate
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.