CH-J Server ManagerZarządzanie serwerem przez SSH
Menu
Wszystkie poradniki i artykuły →

Serwer jest dostępny, ale port SSH 22 nie odpowiada

Sprawdź kolejno klienta, sieć, zaporę i sshd, aby ustalić, dlaczego serwer odpowiada, a SSH nie.

Przetestuj sam port

Odpowiedź na ping lub działająca witryna nic nie mówią o SSH, ponieważ każde z nich używa innego protokołu lub portu. Przetestuj port TCP bezpośrednio z klienta. Connection refused oznacza, że coś odpowiedziało, ale żadna usługa nie przyjęła połączenia. Timeout oznacza, że nic nie odpowiedziało, co zwykle wskazuje na zaporę, problem z routingiem lub przeciążony komputer.

nc -vz -w 5 server.example 22
ssh -v -o ConnectTimeout=5 user@server.example

Connection refused: sprawdź sshd z konsoli

Użyj konsoli dostawcy lub hipernadzorcy, a nie SSH. Sprawdź, czy usługa działa, na jakim adresie i porcie nasłuchuje oraz czy konfiguracja jest poprawna. W nowszych wydaniach Ubuntu SSH uruchamia się przez ssh.socket, więc sprawdź również jednostkę gniazda. W innych dystrybucjach usługa może nazywać się sshd.

sudo systemctl status ssh.service ssh.socket
sudo ss -lntp | grep -E ':22\b|sshd'
sudo sshd -t
sudo journalctl -u ssh -n 50 --no-pager

Timeout: sprawdź zapory

Sprawdź zaporę na serwerze oraz wszystkie filtry poza nim, takie jak grupa zabezpieczeń w chmurze, router lub panel dostawcy. Aby zobaczyć, czy pakiety w ogóle docierają, uruchom tcpdump na serwerze podczas próby połączenia. Jeśli nic się nie pojawia, blokada znajduje się przed serwerem. Jeśli pakiety docierają, ale odpowiedź nie wychodzi, szukaj przyczyny na serwerze.

sudo ufw status verbose
sudo nft list ruleset | less
sudo tcpdump -ni any tcp port 22

Blokada przez fail2ban lub zmieniony port

Po nieudanych logowaniach fail2ban mógł zablokować twój adres. Objawia się to jako timeout lub odmowa połączenia tylko z twojego adresu. Test z innej sieci szybko to wykazuje. Sprawdź też, czy port nie został zmieniony opcją Port lub nasłuchiwanie nie zostało ograniczone do jednego adresu opcją ListenAddress w sshd_config albo w pliku w katalogu /etc/ssh/sshd_config.d.

sudo fail2ban-client status sshd
sudo sshd -T | grep -E '^(port|listenaddress) '

Połączenie z portem działa, ale logowanie się zawiesza

Jeśli połączenie TCP się udaje, ale baner SSH nigdy nie dociera, sshd działa tylko częściowo lub system jest przeciążony. Sprawdź z konsoli pamięć, miejsce na dysku i obciążenie. Pełny dysk lub wyczerpana pamięć mogą uniemożliwić nowe sesje, mimo że istniejące usługi nadal odpowiadają.

uptime
free -h
df -h

Sprawdzanie za pomocą CH-J Server Manager

Server Diagnostics może bez logowania testować ping, połączenie TCP i ciąg identyfikacyjny SSH dla IPv4 oraz IPv6, dzięki czemu widać, na którym etapie występuje błąd. Działa wyłącznie z twojego komputera. Nie ma wglądu do wnętrza serwera ani nie potrafi ustalić, która zapora odrzuciła pakiet, więc do powyższych kontroli nadal potrzebujesz konsoli.

Dokumentacja szczegółowa

OpenSSH: sshd →

man: ss →

Biometryczne odblokowanie i bezpieczeństwo →