2012-12-24 10 views
19

Ustawiłem instancję EC2 kilka dni temu, a nawet ostatniej nocy udało mi się to bez żadnych problemów. Dziś rano, nie mogę tego zrobić. Port 22 jest już otwarty w grupie bezpieczeństwa i nic nie zmieniłem od zeszłej nocy.Uruchamianie instancji EC2 nagle odmawia połączenia SSH

Błąd:

ssh: connect to host [ip address] port 22: Connection refused 

miałem podobny problem niedawno i nie mogłem dowiedzieć się, dlaczego tak się dzieje, więc musiałem utworzyć nową instancję, ustawić go ponownie i podłączyć i skonfigurować wszystkie EBS Przechowywanie do nowego. Zajęło mi to kilka godzin ... i teraz znowu się dzieje. W poprzedniej wersji zainstalowałem denyhost, która mogła mnie zablokować, ale w obecnej wersji działają tylko apache2 i mysql.

Obecna instancja została wyłączona na 16 godzin, więc nie sądzę, że jest tak, ponieważ nie zakończyła się rozruch ... Ponadto port 22 jest otwarty dla wszystkich źródeł (0.0.0.0/0) i jest przy użyciu protokołu tcp.

Wszelkie pomysły?

Dzięki.

+0

Czy ustawić zabezpieczenia SSH na przykład, aby zezwolić na wszystkie adresy IP lub po prostu twoje? Jeśli tylko twój, czy twój adres IP się zmienił? – Kirk

+0

@Kirk: źródło to 0.0.0.0/0 dla wszystkich portów, w tym 22. Protokół: tcp. – Sherzod

+0

Czy utworzyłeś AMI ze swojej Instancji? Jeśli tak, uruchom z niego nową instancję. –

Odpowiedz

24

Z pomocą @ abhi.gupta200297 udało nam się go rozwiązać.

Problem dotyczył błędu w /etc/fstab, a sshd miało zostać uruchomione po pomyślnym wykonaniu fstab. Ale tak nie było, dlatego sshd się nie zaczął i dlatego odmawiał połączenia. Rozwiązaniem było utworzenie tymczasowej instancji, zamontowanie głównego EBS z oryginalnej instancji i skomentowanie rzeczy z fstab i voila, to pozwala mi połączyć się ponownie. W przyszłości po prostu przestałem używać fstab i stworzyłem kilka poleceń powłoki, aby zamontować woluminy EBS do katalogów i dodałem je w pliku /etc/init.d/ebs-init-mount, a następnie uruchomiłem update-rc.d ebs-init-mount defaults, aby zainicjować plik i nie mam już problemów z zablokowanym ssh.

UPDATE 4/23/2015

zespół Amazon stworzył film instruktażowy o podobnym problemie i pokazać, jak debugować za pomocą tej metody: https://www.youtube.com/watch?v=_P29ZHu_feU

+1

Możesz utworzyć post na blogu lub skomentuj tutaj polecenia powłoki/skrypt init, który zastąpiłeś fstab? Mam ten sam problem. –

+0

You shershams, jesteś ratownikiem. Ta uwaga powinna być zawarta w dokumentach amazon. – s29

+0

Mój problem polegał w szczególności na tym, że system plików na pamięci efemerycznej został wyczyszczony podczas wyłączania komputera i dlatego fstab nie mógł go zamontować po uruchomieniu. Pomysł rozwiązania był również doskonałym rozwiązaniem dla mojego problemu. – asaad

1

Przejdź do konsoli zarządzania AWS> wybierz instancję> kliknij prawym przyciskiem myszy i wybierz "Pobierz dzienniki systemowe" Zostanie wyświetlona lista błędów, które wystąpiły.

+1

nic przydatnego ... ostatnie dzienniki mówią o woluminach EBS, z którymi pracowałem wczoraj wieczorem. – Sherzod

6

Wygląda na to, że sshd mogło zostać zatrzymane z jakiegoś powodu. Czy instancja jest wspierana przez EBS? jeśli tak jest, spróbuj go wyłączyć i uruchomić ponownie. To powinno rozwiązać problem.

Możesz również ssh z konsoli internetowej AWS? Mają wtyczkę Java do ssh do instancji.

+0

Konsola internetowa aws mówi również, że połączenie zostało odrzucone. Spróbuję zrestartować teraz. Ale czy istnieje inny sposób niż ponowne uruchomienie? To sprawia, że ​​usługi i witryny internetowe są tam niedostępne dla użytkowników ... – Sherzod

+0

Spróbuj wykonać telnet do instancji na porcie 22. 'telnet hostname 22'. Jeśli się połączy, to przynajmniej poinformuje nas, że sshd jest uruchomiony, ale z jakiegoś powodu jesteśmy blokowani, a my możemy rozwiązać ten problem. –

+0

połączenie odmówiło ... Uruchomiłem ponownie instancję i nadal nie mogę uzyskać do niej dostępu. Również teraz apache i mysql również nie działają. Wsparcie? – Sherzod

4

To zdarzyło mi się na przykład Red Hat EC2, ponieważ te dwie linie były automatycznie dołączane do końca pliku/etc/ssh/sshd_config każdym razem, kiedy rozpoczęła moje wystąpienie:

PermitRootLogin bez-hasła
UseDNS nie

Jeden z tych dopisywanie operacji zostało zrobione bez przerwy linii, więc ogon pliku sshd_config wyglądało:

PermitRootLogin bez-hasła
UseDNS noPermitRootLogin bez-hasła
UseDNS nie

który spowodował sshd do nie można rozpocząć przy następnym uruchomieniu. Myślę, że było to spowodowane zgłoszonym tutaj błędem: https://bugzilla.redhat.com/show_bug.cgi?id=956531 Rozwiązaniem było usunięcie wszystkich duplikatów na dole pliku sshd_config i dodanie dodatkowych linii na końcu.

+5

Te linie są dodawane za każdym razem, gdy instancja jest uruchamiana (lub restartowana) przez plik /etc/rc.local. Aby temu zapobiec w kółko, musisz również wykomentować 3 powiązane linie w pliku /etc/rc.local. To rozwiąże problem na dobre. – Telegard

+0

ianmcook, @Telegard: dzięki, to się udało –

4

Dla tych z Was, którzy natknąłem tego posta bo nie jesteś w stanie zalogować się na instancji EC2 po restarcie this is cross-posted do a similar question at serverfault:

Od the AWS Developer Forum post on this topic:

Try stopping the broken instance, detaching the EBS volume, and attaching it as a secondary volume to another instance. Once you've mounted the broken volume somewhere on the other instance, check the /etc/sshd_config file (near the bottom). I had a few RHEL instances where Yum scrogged the sshd_config inserting duplicate lines at the bottom that caused sshd to fail on startup because of syntax errors.

Once you've fixed it, just unmount the volume, detach, reattach to your other instance and fire it back up again.

Złammy to w dół, z linkami do dokumentacji AWS:

  1. Stop the broken instance i odłączyć objętość EBS (root), przechodząc do zarządzania EC2 ole, klikając "Elastic Block Store"> "Volumes", klikając prawym przyciskiem myszy wolumin związany z zatrzymaną instancją.
  2. Uruchom nową instancję w tym samym regionie i tym samym systemie operacyjnym, co uszkodzona instancja, a następnie attach the original EBS root volume as a secondary volume to your new instance. Polecenia opisane w kroku 4 zakładają, że podłączasz wolumin do folderu o nazwie "data".
  3. Gdy masz mounted the broken volume somewhere on the other instance,
  4. sprawdzić "/ etc/sshd_config" plik do zduplikowanych wpisów, wydając następujące polecenia:
    • cd /etc/ssh
    • sudo nano sshd_config
    • ctrl-v kilka razy, aby dostać na dole pliku:
    • ctrl-k wszystkie linie na dole z podaniem "PermitRootLogin without-password" i "UseDNS no"
    • ctrl-x i Y aby zapisać i wyjść z edytowanego pliku
  5. @Telegardpoints out (in his comment) że mamy ustalone tylko objaw. Możemy naprawić przyczynę komentując 3 powiązane linie w pliku "/etc/rc.local".Więc:
    • cd /etc
    • sudo nano rc.local
    • szukać "PermitRootLogin ..." linii i usunąć je
    • ctrl-x i Y aby zapisać i wyjść z edytowanego pliku
  6. Po” Naprawiono go, wystarczy unmount the volume,
  7. odłączyć, wchodząc do konsoli zarządzania EC2, klikając "Elastic Block Sto re”>«Volumes», prawy przyciskiem myszy na objętość związanego z wystąpieniem zatrzymania,
  8. reattach to your other instance i
  9. fire it back up again.
+0

To jest najbardziej przydatny post na ten temat! Dzięki wielkie. Dodałbym to, aby ustawić wolumin jako root name na/dev/sda1 pod Red HaT. – Sych

+0

@Sych: chętnie Ci pomożemy. W dokumentacji dołączania woluminów znajduje się sekcja, która zawiera wskazówki dotyczące nazewnictwa woluminów głównych: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html#device_naming –

0

mam podobny ssh zablokowane przez odłączenia EBS ale zapomniał zmodyfikować plik/etc/fstab