So sieht die Meldung aus
ssh: connect to host server.example.com port 22: Connection refusedHäufige Ursachen
- sshd läuft nicht, etwa nach einem Update oder einem fehlerhaften Konfigurationstest.
- Der Dienst lauscht auf einem anderen Port, zum Beispiel
Port 2222, während der Client 22 nutzt. - sshd lauscht nur auf einer Adresse oder nur auf IPv6, die angesprochene IPv4-Adresse hat keinen Listener.
- Eine Firewall lehnt mit REJECT ab. DROP würde dagegen einen Timeout erzeugen.
- Der Hostname zeigt auf einen anderen Server, auf dem kein SSH läuft.
Prüfen
- Status und Listener
systemctl status ssh --no-pager | head -n 5; ss -lntp | grep ssh - Konfigurierte Ports und Adressen
grep -iE '^\s*(Port|ListenAddress|AddressFamily)' /etc/ssh/sshd_config - Port vom Client aus testen
nc -vz server.example.com 22 - Bans auf dem Server prüfen
fail2ban-client status sshd 2>/dev/null | tail -n 5
Lösung
- Dienst starten und Journal lesen:
systemctl start ssh, dannjournalctl -u ssh -n 30. - Wenn der Port geändert wurde, Client, Firewall und Dokumentation anpassen – beide Seiten müssen zusammenpassen.
- Bei fail2ban die eigene IP entbannen:
fail2ban-client set sshd unbanip IP. - Bei IPv6-only-Listening
AddressFamily anysetzen oder die IPv4-Adresse prüfen. - Vor dem Neustart
sshd -tlaufen lassen, damit eine kaputte Konfiguration nicht alle Zugänge sperrt.
Häufige Fragen
Refused oder Timeout – was ist der Unterschied?
Refused heißt, das Paket kam an und wurde abgelehnt, also kein Listener. Timeout heißt, es kommt keine Antwort: Firewall DROP oder falsche IP.
Ich habe mich ausgesperrt – was jetzt?
Über die Konsole des Hosters einloggen, Dienst und Konfiguration prüfen und die eigene IP entbannen. Fail2ban greift nur bei neuen Verbindungen.