Jak rozwiązać problem z blokadą SSH podczas „Nawiązywania połączenia z serwerem”

Opublikowany: 2025-12-21

Secure Shell (SSH) to kluczowy komponent do zdalnego zarządzania i administrowania serwerami. Utknięcie w komunikacie „Nawiązywanie połączenia z serwerem” w kliencie SSH może być frustrujące, szczególnie jeśli masz do czynienia ze środowiskami produkcyjnymi lub konfiguracjami, w których liczy się czas. Ten problem może wydawać się niejasny, ale istnieje wiele potencjalnych przyczyn — od błędnej konfiguracji sieci po problemy z demonem SSH na serwerze docelowym. Wiedza o tym, jak skutecznie rozwiązywać problemy z łącznością SSH, pozwoli Ci zaoszczędzić czas i niepotrzebny stres.

TL;DR

Jeśli sesja SSH utknęła na „Nawiązywanie połączenia z serwerem”, zacznij od sprawdzenia dostępności hosta docelowego i łączności sieciowej. Upewnij się, że usługa SSH działa w miejscu docelowym i nasłuchuje na właściwym porcie. Następnie sprawdź lokalną zaporę sieciową, rozdzielczość DNS lub ustawienia VPN. Użyj szczegółowego rejestrowania SSH (-vvv), aby uzyskać więcej informacji podczas próby połączenia.

1. Potwierdź podstawową łączność sieciową

Zanim zagłębisz się w konfiguracje i pliki dziennika, zacznij od najprostszych kontroli:

  • Pinguj serwer:Użyjpolecenia ping, aby sprawdzić, czy host jest osiągalny.
  • Traceroute lub MTR:Może to pomóc w ustaleniu, czy w jakimś przeskoku sieci między Tobą a serwerem SSH występuje blokada łączności.
  • Telnet lub Netcat:spróbuj uzyskać dostęp do portu 22 (lub niestandardowego portu SSH), aby potwierdzić, że jest on dostępny: telnet your.server.ip 22 lub nc -zv your.server.ip 22

Jeśli serwer nie odpowiada na polecenia ping lub odrzuca port SSH, oznacza to, że host nie działa, sieć blokuje ruch lub SSH nie działa prawidłowo na serwerze.

2. Użyj trybu szczegółowego, aby uzyskać wgląd

SSH zapewnia różne poziomy szczegółowości, które mogą pomóc określić, gdzie w procesie połączenia występuje opóźnienie. Użyj opcji-v,-vvlub-vvv,aby uzyskać bardziej szczegółowe wyniki:

 ssh -vvv [email protected]

Typowe lokalizacje, w których pomaga tryb szczegółowy, obejmują:

  • Sprawdzanie rozdzielczości DNS
  • Ustalanie, czy na określonym etapie upłynął limit czasu próby połączenia
  • Identyfikacja błędów związanych z wymianą kluczy lub uwierzytelnianiem

3. Ustawienia zapory i grupy zabezpieczeń

W wielu przypadkach winowajcą są zapory ogniowe lub ustawienia zabezpieczeń w chmurze. Powinieneś sprawdzić zarówno po stronie klienta, jak i po stronie serwera:

  • Zapora po stronie klienta:upewnij się, że połączenia wychodzące na porcie 22 (lub niestandardowym porcie SSH) są dozwolone.
  • Zapora po stronie serwera:narzędzia takie jakiptableslubufwmogą blokować przychodzący ruch SSH.
  • Grupy zabezpieczeń w chmurze:w środowiskach AWS, GCP lub Azure sprawdź, czy grupa zabezpieczeń zezwala na Twój adres IP i właściwy port.

Jeśli połączenie zawiesza się w momencie „Nawiązywania połączenia”, może to oznaczać, że pakiety są odrzucane w trybie cichym, a nie aktywnie odrzucane.

4. Sprawdź demona SSH na serwerze

Jeśli masz alternatywny dostęp do serwera (np. poprzez konsolę, dostęp szeregowy lub inną sesję zdalną), zaloguj się bezpośrednio i zweryfikuj usługę SSH:

 sudo systemctl status sshd
 sudo netstat -tulpn | grep ssh

Rzeczy, na które warto zwrócić uwagę:

  • Czy usługa jest aktywna i działa?
  • Czy nasłuchuje na oczekiwanym adresie IP i porcie?
  • Czy pojawiły się ostatnio zmiany w pliku konfiguracyjnym SSH (zwykle/etc/ssh/sshd_config), które mogą powodować awarie?

Jeśli niedawno ponownie skonfigurowano protokół SSH lub został on nieprawidłowo uruchomiony ponownie, proces mógł się zawiesić lub przestać odpowiadać na połączenia przychodzące.

5. Problemy z rozpoznawaniem DNS

Jeśli łączysz się przy użyciu nazwy hosta, a nie adresu IP, upewnij się, że DNS poprawnie rozpoznaje:

 nslookup your.server.domain
 dig your.server.domain

Problemy z ustawieniami DNS mogą opóźnić lub przerwać połączenie SSH, jeśli nie można rozwiązać nazwy hosta. Sprawdź także ustawienia pliku/etc/resolv.conflub DNS w routerze lub sieci VPN.

6. Opakowania TCP i ograniczenia oparte na hoście

W niektórych dystrybucjach Linuksa opakowania TCP — kontrolowane przez/etc/hosts.allowi/etc/hosts.deny— mogą ograniczać dostęp SSH:

  • Upewnij się, że plik /etc/hosts.deny nie zawiera linii takiej jak sshd: ALL
  • Jawnie zezwól na swój adres IP w /etc/hosts.allow za pomocą sshd: your.ip.address

Chociaż opakowania TCP są w dużej mierze przestarzałe, starsze systemy mogą nadal z nich korzystać bez wyraźnych wskazań w dziennikach.

7. Zakłócenia VPN lub proxy

Sieci VPN i niektóre konfiguracje proxy mogą zakłócać ruch SSH:

  • Sprawdź, czy Twoja sieć VPN jest aktywna i prawidłowo kieruje ruch.
  • Jeśli korzystasz z dzielonego tunelu VPN, sprawdź, czy ruch do serwera SSH jest uwzględniany w tunelu.
  • Spróbuj tymczasowo wyłączyć VPN i ponownie połączyć się poprzez bezpośredni dostęp do Internetu.

Podobnie korporacyjne serwery proxy lub restrykcyjne bramy mogą upuszczać pakiety SSH lub manipulować nimi, co powoduje zawieszenie sesji.

8. Problemy z kluczem SSH i opóźnienia w uwierzytelnianiu

Chociaż błędy uwierzytelnienia zazwyczaj powodują zwrócenie wyraźnego komunikatu „Odmowa uprawnień”, czasami duże opóźnienia w przetwarzaniu klucza lub autoryzowanym wyszukiwaniu kluczy mogą imitować zablokowanie połączenia.

  • Zbyt wiele kluczy w katalogu ~/.ssh może spowolnić uwierzytelnianie. Użyj IdentitiesOnly yes w~/.ssh/config, aby ograniczyć liczbę prób.
  • Skonfiguruj określony klucz: ssh -i ~/.ssh/my_key user@host

9. Obciążenie serwera i ograniczenia zasobów

Mocno obciążony serwer może spowolnić lub nawet zablokować nowe połączenia SSH:

  • Sprawdź, czy na serwerze nie występują wysokie limity procesora, pamięci RAM lub procesów
  • Jeśli dostęp przez SSH nie jest możliwy, użyj konsoli w chmurze, aby sprawdzić stan systemu

Sytuacje związane z małą ilością pamięci mogą spowodować nieprawidłowe zachowaniesshdlub po prostu przekroczenie limitu czasu dla nowych prób połączenia.

10. Tymczasowo zablokowany przez Fail2Ban lub podobne narzędzia

Narzędzia zabezpieczające, takie jak Fail2Ban lub DenyHosts, mogą blokować adresy IP, w przypadku których wielokrotnie nie udało się uwierzytelnić. Może to spowodować ciche zawieszenie połączenia:

  • Sprawdź zakazy IP w /var/log/fail2ban.log lub powiązanych dziennikach
  • Jeśli to możliwe, umieść swój adres IP na białej liście lub uzyskaj dostęp do serwera z innej sieci

Wniosek

Problemy z połączeniem SSH — zwłaszcza, gdy utkną na „Nawiązywanie połączenia z serwerem” — mogą wynikać z różnych czynników, począwszy od ustawień lokalnej zapory sieciowej po problemy z wydajnością serwera zdalnego. Niezbędne jest zdyscyplinowane podejście do rozwiązywania problemów, które zaczyna się od podstawowych testów łączności i prowadzi do szczegółowego rejestrowania i sprawdzania konfiguracji. Korzystanie z narzędzi takich jak szczegółowe dane wyjściowe SSH, przeglądanie dzienników systemowych, sprawdzanie poprawności DNS i sprawdzanie, czy serwer reaguje, pomoże Ci skutecznie wyizolować pierwotną przyczynę.

Pamiętaj: zawsze testuj zmiany stopniowo i twórz kopie zapasowe wszelkich modyfikowanych konfiguracji. W środowiskach o wysokiej dostępności posiadanie metody zarządzania poza pasmem — takiej jak IPMI, konsola szeregowa lub dostęp do głównego serwera — ma kluczowe znaczenie, gdy SSH nie odpowiada.