Możliwe przyczyny przekroczenia limitu czasu podczas próby uzyskania dostępu do instancji EC2

104

Nie mogę nawiązać połączenia SSH z moją instancją - przekroczono limit czasu operacji. Jakie mogą być tego przyczyny i co mogę zrobić, aby rozwiązać ten problem? Ponowne uruchomienie zwykle zajmuje dużo czasu i może tylko pogorszyć sytuację

AKTUALIZACJA: Nie chodzi o uprawnienia - normalnie mogę się zalogować. Podejrzewam, że może to być spowodowane problemami z pamięcią

ming yeow
źródło
3
Powinieneś wypróbować serverfault.com, ponieważ tak naprawdę nie jest to kwestia programowania.
rwilliams
Firewall? Nasłuchuje SSH na tym porcie?
Kucyki OMG
1
Czy problem nadal występuje, jeśli uruchomisz inną instancję? (Może również pomóc dowiedzieć się więcej o twojej konfiguracji). Zaktualizowałem moją odpowiedź.
Jonik
pinguj najpierw DNS. Jeśli się nie powiedzie, skonfiguruj reguły ruchu przychodzącego / wychodzącego w kreatorze uruchamiania. skonfiguruj CAŁY ruch i WSZYSTKIE protokoły i po prostu zapisz z domyślnymi opcjami. Pinguj ponownie w systemie lokalnym, a następnie powinno działać.
Maiden

Odpowiedzi:

67

Czy ustawiłeś odpowiednią grupę zabezpieczeń dla instancji? To znaczy taki, który umożliwia dostęp z sieci do portu 22 w instancji. (Domyślnie cały ruch jest zabroniony).

Aktualizacja: Ok, nie jest to kwestia grupy zabezpieczeń. Ale czy problem nie ustąpi, jeśli uruchomisz inną instancję z tego samego AMI i spróbujesz uzyskać do niej dostęp? Może ta konkretna instancja EC2 po prostu jakoś przypadkowo zawiodła - to tylko kwestia czasu, aby coś takiego się wydarzyło. (Zalecana lektura: Architecting for the Cloud: Best Practices (PDF), artykuł autorstwa Jinesha Varii, który jest ewangelistą usług internetowych w Amazon. Zobacz zwłaszcza sekcję zatytułowaną „Projektowanie na wypadek awarii i nic nie zawiedzie”).

Jonik
źródło
Oto to samo na EC2 FAQ: developer.amazonwebservices.com/connect/ ... (Poza tym ec2-authorizemożesz użyć rozszerzenia Elasticfox Firefox, aby łatwo skonfigurować grupy.)
Jonik
1
Mój Boże ... otwarcie portu SSH w grupie jest tak proste, że nie mogę uwierzyć, że go tu nie ma: alestic.com/2009/08/ec2-connectivity . Dzięki za wskazanie tego.
mtyson,
och, zupełnie zapomniałem o grupie bezpieczeństwa! Dzięki!
Antonio Beno
92

Miałem ten sam problem i ostatecznie rozwiązaniem było dodanie adresu IP mojego komputera lokalnego do listy reguł przychodzących w aktywnej grupie zabezpieczeń. W oknie dialogowym połączenia przychodzącego poniżej wpisz 22 w zakresie portów, lokalny adres IP / 32 w polu źródła i pozostaw „niestandardową regułę tcp” w menu rozwijanym.

wprowadź opis obrazu tutaj

ted.strauss
źródło
6
Po naciśnięciu przycisku „dodaj regułę”, musisz również nacisnąć „zastosuj zmianę reguły”, aby odniosła skutek. Nie zapomnij o tym. Kilka razy mnie zepsuło.
ted.strauss
Wielkie dzięki za to!
Hego555
Doskonała odpowiedź! Nie boję się już włamania: D
softvar
2
to zadziałało dla mnie, dzięki !! Z jakiegoś powodu… mój adres IP się zmienił i nagle nie mogłem połączyć się z instancją ec2. Właśnie dodałem regułę i zamiast wstawiać „niestandardowy” adres IP, po prostu wybrałem „moje IP” i wala… Udało mi się wejść ssh!
rikkitikkitumbo
Dobra odpowiedź! Uważam, że rozwiązywanie problemów z AWS również jest bardzo przydatne i zawiera punkt zasugerowany powyżej.
J0ANMM
28

Zniszcz i twórz od nowa

Miałem jedną strefę dostępności, w której mogłem się połączyć, i drugą, w której nie mogłem. Po kilku godzinach byłem tak sfrustrowany, że usunąłem wszystko w tej strefie dostępności.

Budując wszystko z powrotem, musiałem upewnić się, że stworzę WSZYSTKO. Obejmuje to:

  • Utwórz VPC
    • CIDR: 10.0.0.0/24
  • Utwórz bramę internetową
  • Dołącz bramę internetową do VPC
  • Utwórz tablicę routingu
  • Dodaj trasę do tablicy routingu
    • Destination: 0.0.0.0/0
    • Target: <Internet Gateway from earlier>
  • Utwórz podsieć
    • CIDR: 10.0.0.0/24
    • Routing Table: <Routing Table from earlier

Zajęło mi to DUŻO grzebania, aby to wszystko osiągnąć. Uporządkowałem kroki w sposób, który moim zdaniem może być najbardziej efektywny, ale być może będziesz musiał je dostosować, aby uzyskać jeden element dostępny dla następnego.

Sugestia

Nie sugeruję, żebyś poszedł na termojądrowy, tak jak ja. Podaję wszystkie te informacje, abyś mógł sprawdzić te skojarzenia, aby upewnić się, że twoje są odpowiednie.

Bruno Bronosky
źródło
6
to naprawdę mi pomogło! Miałem przypadek, w którym moja tablica routingu nie była wskazana na bramę internetową i był to jedyny problem.
EdgeCaseBerg
Szczerze mówiąc, dokumentuję te rzeczy na SO i na github / gists, ponieważ wiem, że skopię się, gdy będę musiał to zrobić ponownie za 2 miesiące. Mam nadzieję, że pomoże też innym. Ale ostatecznie jestem tylko samolubną katastrofą. Dzięki za poświęcenie czasu na komentarz, @EdgeCaseBerg.
Bruno Bronosky
2
Dzięki TON @BrunoBronosky. Dokładnie, jeśli ta "brama internetowa" jest taka musi, to dlaczego domyślna dokumentacja AWS o tym nie wspomina? :(
Anand,
1
@BrunoBronosky thanks! Właśnie to uniemożliwiało mi połączenie się z instancją. Zachowam te kroki dla mojej przyszłej mnie.
saiyancoder
21

Ta odpowiedź jest dla głupich ludzi (takich jak ja). Publiczny DNS Twojego EC2 może (zmieni się) po ponownym uruchomieniu. Jeśli nie zdajesz sobie z tego sprawy i spróbujesz nawiązać połączenie SSH ze starym publicznym DNS, połączenie zostanie przerwane i wygaśnie. Może to prowadzić do przypuszczenia, że ​​coś jest nie tak z twoim EC2 lub grupą bezpieczeństwa albo ... Nie, tylko SSH do nowego DNS. I zaktualizuj swój ~/.ssh/configplik, jeśli musisz!

dslosky
źródło
Godzina rozwiązywania problemów z przekroczeniem limitu czasu i to było rozwiązanie. Dzięki :)
Eric D. Brown
2
Wielkie dzięki @dslosky, uratowałeś mi życie. :)
A_01
13

Aby się połączyć, użyj ssh w następujący sposób:

ssh -i keyname.pem [email protected]

Gdzie keyname.pemjest nazwa twojego klucza prywatnego, usernameto poprawna nazwa użytkownika dla twojej dystrybucji systemu operacyjnego i xxx.xx.xxx.xxto publiczny adres IP.

W przypadku przekroczenia limitu czasu lub niepowodzenia sprawdź następujące kwestie:

Grupa bezpieczeństwa

Upewnij się, że masz regułę ruchu przychodzącego dla portu TCP 22 i wszystkich adresów IP lub IP. Grupę zabezpieczeń można znaleźć w menu ec2 w opcjach instancji.

Tabela routingu

W przypadku nowej podsieci w sieci wirtualnej należy zmienić tabelę routingu, która wskazuje adres 0.0.0.0/0 na docelową bramę internetową . Kiedy tworzysz podsieć w swoim vpc, domyślnie przypisuje domyślną tablicę routingu, która prawdopodobnie nie akceptuje ruchu przychodzącego z Internetu. Możesz edytować opcje tablicy routingu w menu vpc, a następnie w podsieciach.

Elastyczny adres IP

Na przykład w sieci VPN musisz przypisać plik publiczny elastyczny adres IP i skojarzyć go z instancją. Do prywatnego adresu IP nie można uzyskać dostępu z zewnątrz. Elastyczne IP można uzyskać w menu ec2 (nie w menu instancji).

Nazwa Użytkownika

Upewnij się, że używasz poprawnej nazwy użytkownika . Powinien to być jeden z ec2-userlub rootlububuntu . Wypróbuj je wszystkie, jeśli to konieczne.

Prywatny klucz

Upewnij się, że używasz prawidłowego klucza prywatnego (tego, który pobierasz lub wybierasz podczas uruchamiania instancji). Wydaje się oczywiste, ale skopiuj wklej dostałem dwa razy.

AJcodez
źródło
1
Dzięki za to, zawsze zapominam o dodaniu 0.0.0.0/0 do celu bramy internetowej, kiedy tworzę nowy VPC
Chathushka
7

Czy spojrzałeś na dane wyjściowe konsoli z instancji? Możesz to zrobić za pomocą konsoli AWS (Instancje -> Kliknij prawym przyciskiem myszy instancję -> Pobierz dziennik systemowy). Zdarzały się sytuacje, w których usługi sieciowe na instancji EC2 nie uruchamiały się poprawnie, co powodowało przekroczenie limitu czasu połączeń SSH; ponowne uruchomienie instancji zwykle naprawiało rzeczy.

gareth_bowles
źródło
3

wprowadź opis obrazu tutaj

ZNALAZŁEM TO PO 2 GODZINACH

Zauważ, że ssh ip 120.138.105.251/32

  • NIE JEST ADRESEM IP instancji aws

  • To nie jest Twój lokalny adres IP 127.0.0.1

  • To nie jest Twój lokalny adres IP localhost

ALE, ALE

To Twój publiczny adres IP Twojego komputera osobistego, z którego próbujesz uzyskać dostęp do instancji aws

  1. Wejdź na https://www.whatismyip.com/ dowolny adres IP umieszczony w ssh

JEŚLI CHCESZ W PEŁNI OTWORZYĆ SSH NA WSZYSTKIE ADRESY IP wprowadź opis obrazu tutaj

TAK WYGLĄDA W PEŁNI DOSTĘPNE WPISY - PODSTAWOWE POLECANE wprowadź opis obrazu tutaj

TEGO UŻYWAM W PRODUKCJI wprowadź opis obrazu tutaj

vijay
źródło
2

Oto możliwe problemy:

  • Najbardziej prawdopodobne jest to, że grupa zabezpieczeń nie jest poprawnie skonfigurowana, aby zapewnić dostęp SSH na porcie 22 do twojego adresu IP Zmiana ustawień zabezpieczeń nie wymaga ponownego uruchomienia serwera, aby była skuteczna, ale musi odczekać kilka minut, aby to zadziałało odpowiedni.

  • Lokalna konfiguracja zapory nie zezwala na dostęp do serwera za pomocą protokołu SSH. (możesz wypróbować inne połączenie internetowe, swój telefon / klucz sprzętowy, aby spróbować)

  • Serwer nie został poprawnie uruchomiony (wtedy sprawdzenie dostępu zakończy się niepowodzeniem nawet na konsoli amazon), w takim przypadku należy zatrzymać i uruchomić serwer.

pradosh nair
źródło
W moim przypadku był to problem z zaporą ogniową w sieci, w której pracuję. Korzystanie z VPN do ominięcia tego zadziałało.
MDave
1

Sprawdź tę stronę pomocy w dokumentach AWS:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectionTimeout Prawdopodobnie znajdziesz tam swoje rozwiązanie. dla mnie ta część naprawiła:

[EC2-VPC] Sprawdź tabelę tras dla podsieci. Potrzebujesz trasy, która będzie kierować cały ruch wychodzący poza VPC do bramy internetowej VPC.

  • Otwórz konsolę Amazon VPC pod adresem https://console.aws.amazon.com/vpc/ .

  • W okienku nawigacji wybierz Bramy internetowe. Sprawdź, czy do Twojego VPC jest podłączona brama internetowa. W przeciwnym razie wybierz opcję Utwórz bramę internetową i postępuj zgodnie ze wskazówkami, aby utworzyć bramę internetową, wybierz bramę internetową, a następnie wybierz opcję Dołącz do VPC i postępuj zgodnie ze wskazówkami, aby dołączyć ją do VPC.

  • W okienku nawigacji wybierz podsieci, a następnie wybierz swoją podsieć.

  • Na karcie Route Table sprawdź, czy istnieje trasa z 0.0.0.0/0 jako miejscem docelowym i bramą internetową dla Twojego VPC jako celem. W przeciwnym razie wybierz identyfikator tabeli tras (rtb-xxxxxxxx), aby przejść do karty Trasy tabeli tras, wybierz Edytuj, Dodaj kolejną trasę, wprowadź 0.0.0.0/0 w miejscu docelowym, wybierz swoją bramę internetową z Cel, a następnie wybierz Zapisz.

Ale proponuję sprawdzić wszystkie opcje, które obejmuje powyższy link, możesz znaleźć tam jeden lub więcej problemów, które masz.

Meltzer
źródło
1

Mój problem - miałem otwarty port 22 dla „Mojego adresu IP” i zmieniłem połączenie internetowe i zmianę adresu IP. Więc musiałem to zmienić z powrotem.

smDev
źródło
1

Opierając się na @ted.straussodpowiedzi, możesz wybrać SSHiz MyIPmenu rozwijanego zamiast przechodzić do witryny innej firmy.

Adam J. Gramling
źródło
1

Po zastosowaniu reguł wystarczy ponownie uruchomić instancję Ec2

Shaz
źródło
1

Zezwól na ssh i port 22 z ufw, a następnie włącz go i sprawdź za pomocą polecenia status

sudo ufw allow ssh
sudo ufw allow 22
sudo ufw enable
sudo ufw status
Jagannath Swarnkar
źródło
0

Jeszcze jedna możliwość. Grupy zabezpieczeń AWS są skonfigurowane do pracy tylko z określonymi przychodzącymi adresami IP. Jeśli twoja grupa bezpieczeństwa jest skonfigurowana w ten sposób, Ty (lub właściciel konta) będziesz musiał dodać swój adres IP do grupy bezpieczeństwa. Aby to zrobić, otwórz pulpit nawigacyjny AWS, wybierz grupy bezpieczeństwa, wybierz grupę bezpieczeństwa i kliknij kartę przychodzące. Następnie dodaj odpowiednio swój adres IP.

LA Ferguson
źródło
0

Miałem ten sam problem, a rozwiązaniem było zezwolenie na dostęp z dowolnego miejsca do listy reguł przychodzących w aktywnej grupie zabezpieczeń. W oknie dialogowym danych przychodzących wprowadź 22 w zakresie portów w dowolnym miejscu pola źródłowego i wybierz „ssh” z listy rozwijanej.

PS: To może nie być zalecane rozwiązanie, ponieważ oznacza to, że ta instancja może być ssh'owana z dowolnej maszyny, ale nie mogłem jej zmusić do pracy z moim lokalnym adresem IP.

Yahya
źródło
0

Miałem podobny problem, gdy korzystałem z publicznego Wifi, które nie miało hasła. Przełączenie połączenia internetowego na bezpieczne połączenie rozwiązało problem.

Bharath Ram
źródło
0

Jeśli dostęp SSH nie działa dla Twojej instancji EC2, musisz sprawdzić:

  • Grupa bezpieczeństwa dla Twojej instancji zezwala na dostęp przychodzący SSH (sprawdź: wyświetl reguły ).

Jeśli używasz instancji VPC (masz identyfikator VPC i identyfikator podsieci dołączone do instancji), sprawdź:

  1. W panelu VPC znajdź używany identyfikator podsieci, który jest dołączony do Twojego VPC.
  2. Sprawdź dołączoną tabelę tras, która powinna mieć 0.0.0.0/0jako miejsce docelowe, a brama internetowa jako cel.

W systemie Linux, można również sprawdzić informacje o trasach w dzienniku systemowym w Sieci instancji, np:

++++++++++++++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++++++++++++++
+--------+------+------------------------------+---------------+-------+-------------------+
| Device |  Up  |           Address            |      Mask     | Scope |     Hw-Address    |
+--------+------+------------------------------+---------------+-------+-------------------+
|   lo   | True |          127.0.0.1           |   255.0.0.0   |   .   |         .         |
|  eth0  | True |         172.30.2.226         | 255.255.255.0 |   .   | 0a:70:f3:2f:82:23 |
+--------+------+------------------------------+---------------+-------+-------------------+
++++++++++++++++++++++++++++Route IPv4 info+++++++++++++++++++++++++++++
+-------+-------------+------------+---------------+-----------+-------+
| Route | Destination |  Gateway   |    Genmask    | Interface | Flags |
+-------+-------------+------------+---------------+-----------+-------+
|   0   |   0.0.0.0   | 172.30.2.1 |    0.0.0.0    |    eth0   |   UG  |
|   1   |   10.0.3.0  |  0.0.0.0   | 255.255.255.0 |   lxcbr0  |   U   |
|   2   |  172.30.2.0 |  0.0.0.0   | 255.255.255.0 |    eth0   |   U   |
+-------+-------------+------------+---------------+-----------+-------+

gdzie UG flagi pokazujące Twoją bramę internetową.

Aby uzyskać więcej informacji, zobacz: Rozwiązywanie problemów z łączeniem się z Twoją instancją w Amazon docs.

kenorb
źródło
0

Aby włączyć dostęp ssh z Internetu do instancji w podsieci VPC, wykonaj następujące czynności:

  • Podłącz bramę internetową do swojego VPC.
  • Upewnij się, że tabela tras Twojej podsieci wskazuje bramę internetową.
  • Upewnij się, że instancje w Twojej podsieci mają globalnie unikatowy adres IP (publiczny adres IPv4, elastyczny adres IP lub adres IPv6).
  • Upewnij się, że kontrola dostępu do sieci (na poziomie VPC) i reguły grupy zabezpieczeń (na poziomie ec2) zezwalają na przepływ odpowiedniego ruchu do i z Twojej instancji. Upewnij się, że publiczny adres IP sieci jest włączony dla obu. Domyślnie Network AcL zezwala na cały ruch przychodzący i wychodzący, chyba że jawnie skonfigurowano inaczej
Niewinny Anigbo
źródło
0

Dla mnie był to serwer Apache hostowany na instancji t2.micro linux EC2, a nie sama instancja EC2.

Naprawiłem to, wykonując:

sudo su

service httpd restart

Gus
źródło
0

Miałem ten sam problem i rozwiązałem go, dodając regułę do grup bezpieczeństwa

Przychodzący SSH 0.0.0.0/0

Możesz też dodać tylko swój adres IP

Majali
źródło
0

Dla mnie było to, że usunąłem wszystko z woluminu rozruchowego. Nie można już połączyć się z instancją.

t_sologub
źródło
0

Pracowałem nad instancją i było dobrze, już następnego dnia, gdy próbowałem połączyć się przez SSH z moją instancją, pojawił się komunikat - Limit czasu połączenia.

Próbowałem przejść przez ten post, ale nic nie działało. Więc zrobiłem -

W Edit inbound ruleskolumnie ze źródła wybierz, MY IPa Twój publiczny adres IP zostanie automatycznie wypełniony w formacie CIDR ( XXX.XXX.XXX.XX/32).

Próbowałem z odpowiedzią @ ted.strauss, podając lokalny adres IP, ale to nie pomogło w moim przypadku. Więc wybrałem MOJE IP i zadziałało.

Mam nadzieję, że to komuś pomoże!

rbashish
źródło
0

pinguj najpierw DNS. Jeśli się nie powiedzie, skonfiguruj reguły ruchu przychodzącego / wychodzącego w kreatorze uruchamiania. skonfiguruj CAŁY ruch i WSZYSTKIE protokoły i po prostu zapisz z domyślnymi opcjami. Pinguj ponownie w systemie lokalnym, a następnie powinno działać

Dziewica
źródło
0

Jeśli właśnie utworzyłeś nową instancję i nie możesz się z nią połączyć, udało mi się rozwiązać problem, zamykając tę ​​instancję i tworząc nową. Oczywiście zadziała to tylko wtedy, gdy jest to nowa instancja i nie wykonałeś już nad nią żadnej pracy.

José Del Valle
źródło