CH-J Server Managerspráva serverov nad SSH
Menu
Všetky návody a články →

Server je online, ale SSH port 22 neodpovedá

Postupne skontrolujte klienta, sieť, firewall a sshd a zistite, prečo server odpovedá, ale SSH nie.

Otestujte samotný port

Odpoveď na ping ani funkčný web nič nehovoria o SSH, pretože každé z nich používa iný protokol alebo port. Otestujte TCP port priamo z klienta. Connection refused znamená, že niečo odpovedalo, ale žiadna služba pripojenie neprijala. Timeout znamená, že neodpovedalo nič, čo zvyčajne poukazuje na firewall, smerovanie alebo preťažený počítač.

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

Connection refused: skontrolujte sshd z konzoly

Použite konzolu poskytovateľa alebo hypervízora, nie SSH. Skontrolujte, či služba beží, na akej adrese a porte počúva a či je konfigurácia platná. V novších vydaniach Ubuntu sa SSH spúšťa cez ssh.socket, preto skontrolujte aj jednotku socketu. Iné distribúcie môžu službu nazývať 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: skontrolujte firewally

Pozrite sa na firewall na serveri aj na všetky filtre mimo neho, napríklad bezpečnostnú skupinu v cloude, smerovač alebo panel poskytovateľa. Ak chcete zistiť, či pakety vôbec prichádzajú, spustite na serveri počas pokusu o pripojenie tcpdump. Ak sa nič nezobrazí, blokovanie je pred serverom. Ak pakety prichádzajú, ale neodchádza žiadna odpoveď, hľadajte príčinu na serveri.

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

Blokovanie cez fail2ban alebo zmenený port

Po neúspešných prihláseniach mohol fail2ban zablokovať vašu adresu, čo sa prejaví ako timeout alebo odmietnuté pripojenie iba z vašej adresy. Test z inej siete to rýchlo ukáže. Overte tiež, či sa port nezmenil pomocou Port alebo či sa počúvanie neobmedzilo na jednu adresu pomocou ListenAddress v sshd_config alebo v súbore pod /etc/ssh/sshd_config.d.

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

Pripojenie k portu funguje, ale prihlásenie sa zasekne

Ak sa TCP pripojenie podarí, ale úvodná identifikačná správa SSH nikdy nepríde, sshd funguje iba čiastočne alebo je systém preťažený. Z konzoly skontrolujte pamäť, miesto na disku a záťaž. Plný disk alebo vyčerpaná pamäť môžu znemožniť nové relácie, hoci existujúce služby stále odpovedajú.

uptime
free -h
df -h

Kontrola pomocou CH-J Server Manager

Server Diagnostics dokáže bez prihlásenia otestovať ping, TCP pripojenie a identifikačný reťazec SSH pre IPv4 aj IPv6, takže uvidíte, ktorá fáza zlyháva. Pracuje iba z vášho počítača. Nedokáže nahliadnuť do servera ani určiť, ktorý firewall zahodil paket, preto na uvedené kontroly stále potrebujete konzolu.

Podrobná dokumentácia

OpenSSH: sshd →

man: ss →

Biometrické odomknutie a bezpečnosť →