CH-J Server Managerspráva serverů přes SSH
Menu
Všechny návody a články →

Server je online, ale port 22 pro SSH neodpovídá

Postupně prověřte klienta, síť, firewall a sshd a zjistěte, proč server odpovídá, ale SSH ne.

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.example

Connection 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-pager

Timeout: 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 22

Bloková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 -h

Kontrola 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.

Podrobná dokumentace

OpenSSH: sshd →

man: ss →

Biometrické odemykání a zabezpečení →