Verifica direttamente la porta
Una risposta a ping o un sito web funzionante non dicono nulla su SSH, perché ciascuno usa un protocollo o una porta diversi. Verifica la porta TCP direttamente dal client. Connection refused significa che qualcosa ha risposto ma nessun servizio ha accettato la connessione. Un timeout significa che non ha risposto nulla e in genere indica un problema di firewall, di instradamento o un computer sovraccarico.
nc -vz -w 5 server.example 22
ssh -v -o ConnectTimeout=5 user@server.exampleConnection refused: controlla sshd dalla console
Usa la console del provider o dell’ipervisore, non SSH. Verifica che il servizio sia in esecuzione, su quale indirizzo e porta sia in ascolto e se la configurazione sia valida. Nelle versioni recenti di Ubuntu, SSH si avvia tramite ssh.socket, quindi controlla anche l’unità socket. Altre distribuzioni possono chiamare il servizio 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: controlla i firewall
Controlla il firewall del server e anche eventuali filtri esterni, come un gruppo di sicurezza del cloud, il router o il pannello del provider. Per vedere se i pacchetti arrivano, esegui tcpdump sul server durante un tentativo di connessione. Se non compare nulla, il blocco è prima del server. Se i pacchetti arrivano ma non esce alcuna risposta, cerca il problema sul server.
sudo ufw status verbose
sudo nft list ruleset | less
sudo tcpdump -ni any tcp port 22Blocco dovuto a fail2ban o a una porta cambiata
Dopo alcuni accessi falliti, fail2ban potrebbe aver bloccato il tuo indirizzo: questo si manifesta come timeout o connessione rifiutata soltanto dal tuo indirizzo. Un test da un’altra rete lo rivela rapidamente. Controlla anche se la porta è stata cambiata con Port o se l’ascolto è stato limitato a un solo indirizzo con ListenAddress in sshd_config o in un file sotto /etc/ssh/sshd_config.d.
sudo fail2ban-client status sshd
sudo sshd -T | grep -E '^(port|listenaddress) 'La connessione alla porta riesce ma l’accesso si blocca
Se la connessione TCP riesce ma il banner SSH non arriva mai, sshd funziona solo parzialmente oppure il sistema è sovraccarico. Controlla dalla console memoria, spazio su disco e carico. Un disco pieno o la memoria esaurita possono impedire nuove sessioni mentre i servizi esistenti continuano a rispondere.
uptime
free -h
df -hVerifica con CH-J Server Manager
Server Diagnostics può testare ping, una connessione TCP e la stringa di identificazione SSH senza effettuare l’accesso, sia per IPv4 sia per IPv6, così puoi vedere in quale fase si verifica il problema. Opera solo dal tuo computer. Non può vedere all’interno del server né stabilire quale firewall abbia scartato un pacchetto, quindi per i controlli indicati sopra serve comunque la console.