Serwer SSH nie działa (odradza się aż do zatrzymania)

12

Mam uruchomiony Ubuntu Server 10.04.1. Kiedy próbowałem zalogować się do serwera przez ssh, nie mogłem. Zamiast tego mam connection refusedbłąd. Próbowałem pingować maszynę i dostałem odpowiedź! Oczywistym powodem jest zatrzymanie demona SSH.

Po ponownym uruchomieniu mogłem zalogować się na mój serwer przez ssh. Po pewnym czasie przejrzałem moje dzienniki /var/log/syslogi znalazłem następujące rekordy:

Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2465) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2469) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2473) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2477) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2481) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2485) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2489) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2493) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2497) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2501) terminated with status 255
Jan 16 10:57:09 myserver init: ssh respawning too fast, stopped

Szukałem podobnego problemu / rozwiązania. Niektórzy ludzie mówili, że jest to spowodowane przez demona SSH przed próbą uruchomienia sieci i zaproponować zmiany ListenAddressw /etc/ssh/sshd_configbyć 0.0.0.0. Myślę, że nie jest to przyczyną w moim przypadku, ponieważ mój problem pojawia się po uruchomieniu systemu.

Masz pojęcie, co to powoduje? To jest Ubuntu Server i powinien być uruchomiony i dostępny zdalnie przy użyciu SSH.

AKTUALIZACJA:

Oto fragment dziennika, w którym znalazłem /var/log/auth.log.

Jan 16 10:56:38 myserver sudo:     user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/vim /etc/ssh/sshd_config
Jan 16 10:57:09 myserver sudo:     user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/etc/init.d/ssh reload
Jan 16 10:57:09 myserver sshd[1465]: Received SIGHUP; restarting.
Jan 16 10:57:09 myserver sshd[2461]: Server listening on 0.0.0.0 port 22.
Jan 16 10:57:09 myserver sshd[2465]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2465]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2469]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2469]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2473]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2473]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2477]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2477]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2481]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2481]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2485]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2485]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2489]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2489]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2493]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2493]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2497]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2497]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2501]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2501]: fatal: Cannot bind any address.

Wygląda na to, że ten błąd zaczął pojawiać się po ponownym załadowaniu demona SSH. Czy powinienem unikać używania ssh reloadi używania ssh restartzamiast tego?

Khaled
źródło
Sprawdź także ten. Może to być problem z sshd_config sintaxis bugs.launchpad.net/ubuntu/+source/openssh/+bug/911753

Odpowiedzi:

7

Powinieneś sprawdzić, co się stało tuż przed rozpoczęciem SSH syslog. Jeśli podsystem sieci zginie, może to wyjaśnić, dlaczego sshdzaczął się zawodzić.

Sprawdziłbym również /var/log/auth.log. Jest to sshddziennik i może dać lepszy komunikat o błędzie.

Oli
źródło
Dzięki! Znalazłem wiele wpisów w auth.logpliku i zaktualizowałem swoje pytanie.
Khaled
reloadpowinno być prawidłowym działaniem. To powinno wywołać wewnętrzny restart (i wydaje się, że próbowali i just got stuck). Spróbuj ponownie załadować i sprawdź, czy znowu się zablokuje.
Oli
rzeczywiście, przeładowanie powinno być prawidłowe, ale jest błąd. Zobacz moją odpowiedź, aby uzyskać więcej informacji.
SpamapS
16

Właśnie miałem ten sam problem na moim pudełku 12.04. To znaczy te same objawy. Niestety, zawsze tak się działo, kiedy wprowadzałem ListenAddressklauzulę z adresami ineti inet6w sshd_config. Krótko mówiąc, wydaje się to być objawem zniekształceń sshd_config- chociaż pliki dziennika nie zawierają takich informacji.

Rozwiązywanie problemów sshd

To, co ogólnie uważam za bardzo przydatne w takich przypadkach, to zacząć sshdbez pozwalania na demonizację. Problem w moim przypadku polegał na tym, że ani syslognie auth.logwykazało niczego znaczącego.

Kiedy uruchomiłem go z terminala, otrzymałem:

# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.

Dużo lepiej! Ten komunikat o błędzie pozwolił mi zobaczyć, co jest nie tak, i naprawić to. Żaden z plików dziennika nie zawierał tego wyniku.

Uwaga: przynajmniej w Ubuntu $(which sshd)jest to najlepsza metoda spełnienia sshdwymogu bezwzględnej ścieżki. W przeciwnym razie będziesz się następujący błąd: sshd re-exec requires execution with an absolute path. Te -p 10222marki sshdsłuchać tego alternatywnego portu, zastępując plik konfiguracyjny - to jest tak, że nie kolidują z potencjalnie uruchomionych sshdinstancji. Wybierz tutaj wolny port.

Ta metoda pomogła mi wiele razy w znalezieniu problemów, czy to uwierzytelniania, czy innych typów. Aby uzyskać naprawdę pełne dane wyjściowe stdout, użyj $(which sshd) -Ddddp 10222(zwróć uwagę na dodane w ddcelu zwiększenia szczegółowości). Aby uzyskać więcej informacji na temat sprawdzania poprawności debugowania man sshd.


Główną zaletą tej metody jest to, że pozwala ona sprawdzić sshdkonfigurację bez konieczności restartowania sshddomyślnego portu. Zwykle nie powinno to zakłócać istniejących połączeń SSH, ale widziałem to. Dzięki temu można zweryfikować plik konfiguracyjny przed - potencjalnie - odcięciem dostępu do zdalnego serwera (na przykład mam go dla niektórych VPS, a nawet dla serwerów fizycznych, gdzie muszę zapłacić dodatkowo, aby uzyskać dostęp poza pasmem do maszyny).

0xC0000022L
źródło
3
Twoja sztuczka z bezpośrednim wywołaniem właśnie uratowała mi bekon. W moim pliku sshd_config (wygenerowanym z Chef) wystąpił błąd, który udało mi się rozwiązać za pomocą tej techniki. DZIĘKUJEMY za poświęcenie czasu na opublikowanie go wszystkim.
Peter Laird
4

Wydaje się, że jest to wynik błędu # 687535, który został niedawno naprawiony w natty, i został przesłany zarówno do indywidualnego, jak i świadomego jako proponowana aktualizacja.

https://bugs.launchpad.net/ubuntu/lucid/+source/openssh/+bug/687535

Zachęcam wszystkich, aby tam poszli, wypróbowali przypadek testowy (wyszukaj TEST CASE) i opublikowali wyniki zarówno przed instalacją, jak i po instalacji proponowanej poprawki. Pomoże to zespołowi SRU zdecydować, że weryfikacja została wykonana i wyda ją jako aktualizację.

Spamapy
źródło
2

W /etc/ssh/sshd_configupewnij się, że wszystkie tak i nie ma małych liter. Na przykład, jeśli ustawisz PermitRootLogin No, ssh nie uruchomi się. Tak naprawdę musi być PermitRootLogin no.

Pływ
źródło
1

Miałem podobny problem z obrazem Ubuntu 11.10 na Linode po ponownym uruchomieniu. Usługa ssh wygeneruje w syslog:

Mar 18 06:31:33 servername kernel: init: ssh main process ended, respawning
Mar 18 06:31:33 servername kernel: init: ssh main process (3419) terminated with status 255
Mar 18 06:31:33 servername kernel: init: ssh main process ended, respawning
Mar 18 06:31:33 servername kernel: init: ssh main process (3422) terminated with status 255
Mar 18 06:31:33 servername kernel: init: ssh respawning too fast, stopped

To pudełko testowe, które miało około 60 dni bezawaryjności, więc gdzieś po drodze zainstalowałem coś, co dopisało się do dolnej części sshd_config:

ClientAliveInterval 60
ClientCountAliveMax 60

Komentowanie tych linii pozwoliło na uruchomienie ssh.

Joe
źródło
0

Ubuntu ssh nie uruchomił się, a syslog dał „inicjalizacja głównego procesu ssh (2044) zakończona statusem 255”

/ usr / sbin / sshd -Ddp 10222

Pewnie pracował dla mnie, aby ustalić błąd linii sshd_config

użytkownik652460
źródło
-1

dostałem ten sam problem, górne rozwiązanie nie działa, ale mam rozwiązanie tego.

root@imt:~# sshd
sshd re-exec requires execution with an absolute path
ssh localhost
ssh: connect to host localhost port 22: Network is unreachable

Ścieżka jest zgodna z dokumentem, więc uruchamiam ręcznie sshd.

root@imt:~# /usr/sbin/sshd 
/var/run/sshd must be owned by root and not group or world-writable

Uprawnienie / var / run / sshd to.

root@imt:~# ls -ld /var/run/sshd
drwsrwsrwt 2 root root 40 Jan  5 12:58 /var/run/sshd

root@imt:~# chmod 755 /var/run/sshd

to jest w porządku. uruchom ssh localhost i sprawdź.

root@imt:~# ssh localhost 
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 64:93:fd:ab:4c:f9:7b:8a:86:60:22:f7:56:fa:ea:cc.
Are you sure you want to continue connecting (yes/no)? yes
Vicky Dhindsa
źródło
1
Chociaż jest to pomocny przewodnik, to oczywiście nie to, co spowodowało, że OP sshdnie działa poprawnie, jak widać z bardzo różnych komunikatów o błędach w ich dziennikach. -1
David Foerster