Otestujte samotný port
Odpověď na ping ani funkční web nic nevypovídají o SSH, protože každé používá jiný protokol nebo port. Otestujte TCP port přímo z klienta. Connection refused znamená, že něco odpovědělo, ale žádná služba spojení nepřijala. Timeout znamená, že nic neodpovědělo, což obvykle ukazuje na firewall, směrování nebo přetížený počítač.
nc -vz -w 5 server.example 22
ssh -v -o ConnectTimeout=5 user@server.exampleConnection refused: zkontrolujte sshd z konzole
Použijte konzoli poskytovatele nebo hypervizoru, nikoli SSH. Zkontrolujte, zda služba běží, na jaké adrese a portu naslouchá a zda je konfigurace platná. V novějších vydáních Ubuntu se SSH spouští prostřednictvím ssh.socket, proto prověřte i tuto socketovou jednotku. V jiných distribucích se služba může jmenovat 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-pagerTimeout: zkontrolujte firewally
Prověřte firewall na serveru i všechny filtry mimo něj, například cloudovou bezpečnostní skupinu, směrovač nebo panel poskytovatele. Chcete-li zjistit, zda pakety vůbec přicházejí, spusťte na serveru během pokusu o spojení tcpdump. Pokud se nic neobjeví, k blokování dochází před serverem. Pokud pakety přicházejí, ale žádná odpověď neodchází, hledejte příčinu na serveru.
sudo ufw status verbose
sudo nft list ruleset | less
sudo tcpdump -ni any tcp port 22Blokování pomocí fail2ban nebo změna portu
Po neúspěšných přihlášeních mohl fail2ban zablokovat vaši adresu, což se projeví jako timeout nebo odmítnuté spojení pouze z vaší adresy. Test z jiné sítě to rychle odhalí. Zkontrolujte také, zda nebyl port změněn volbou Port nebo naslouchání omezeno na jednu adresu volbou ListenAddress v sshd_config nebo v souboru pod /etc/ssh/sshd_config.d.
sudo fail2ban-client status sshd
sudo sshd -T | grep -E '^(port|listenaddress) 'Spojení s portem se naváže, ale přihlášení se zasekne
Pokud se TCP spojení podaří navázat, ale nikdy nepřijde úvodní identifikační řetězec SSH, sshd funguje jen částečně nebo je systém přetížený. Z konzole zkontrolujte paměť, místo na disku a zatížení. Plný disk nebo vyčerpaná paměť mohou zabránit vzniku nových relací, přestože stávající služby stále odpovídají.
uptime
free -h
df -hKontrola pomocí CH-J Server Manager
Server Diagnostics umí bez přihlášení otestovat ping, TCP spojení a identifikační řetězec SSH pro IPv4 i IPv6, takže uvidíte, ve které fázi nastává chyba. Testuje pouze z vašeho počítače. Nevidí dovnitř serveru ani neurčí, který firewall paket zahodil, proto pro výše uvedené kontroly stále potřebujete konzoli.