Help Center /Anleitungen /SSH-Port ändern unter Debian und Ubuntu (auch 24.04)

SSH-Port ändern unter Debian und Ubuntu (auch 24.04)

SSH auf einen anderen Port legen, ohne dich auszusperren: Firewall zuerst, sshd_config, ssh.socket unter Ubuntu 24.04, Test in zweiter Sitzung, Fail2ban.

Updated 23.10.2026

Ein anderer SSH-Port hält die meisten automatischen Scans fern und macht die Logs ruhiger. Echte Sicherheit bringt aber erst ein SSH-Key mit abgeschaltetem Passwort-Login.

Achtung: Ein Fehler in diesem Ablauf kann dich aussperren. Halte dich an die Reihenfolge und schließe deine aktuelle SSH-Verbindung erst, wenn der Test in Schritt 5 geklappt hat. Bestehende Verbindungen bleiben offen, wenn du SSH neu startest.

1. Freien Port wählen

Nimm einen Port zwischen 1024 und 65535, den kein anderer Dienst nutzt. Die Beispiele verwenden 2222. Ob der Port frei ist, zeigt dieser Befehl. Kommt keine Ausgabe, ist er frei:

ss -tlnp | grep ':2222 '

2. Neuen Port in der Firewall freigeben

Immer zuerst, sonst sperrst du dich aus. Mit UFW:

ufw allow 2222/tcp

Die Regel für Port 22 bleibt vorerst stehen. Nutzt du keine Firewall auf dem Server, überspringst du diesen Schritt.

Steht im Panel unter Firewall die Einstellung „Eingehend: Geschlossen“, brauchst du dort ebenfalls eine Regel für den neuen Port. Sonst kommt die Verbindung nicht an, auch wenn UFW stimmt.

3. Port in der SSH-Konfiguration eintragen

Öffne /etc/ssh/sshd_config, suche die Zeile #Port 22 und ersetze sie durch:

Port 2222

Prüfe dann die Syntax (keine Ausgabe heißt: alles in Ordnung) und welche Ports SSH tatsächlich verwenden wird:

sshd -t
sshd -T | grep -i '^port'

Erwartet ist genau eine Zeile port 2222. Steht dort zusätzlich port 22, ist der alte Port noch woanders eingetragen, oft in einer Datei unter /etc/ssh/sshd_config.d/.

Tipp: Wer ganz vorsichtig sein will, trägt vorübergehend beide Zeilen ein, Port 22 und Port 2222. Dann lauscht SSH auf beiden Ports, und du entfernst Port 22 erst nach dem Test.

4. SSH neu starten

Wie das geht, hängt davon ab, ob dein System SSH über ssh.socket startet (Socket-Aktivierung). Das prüfst du so:

systemctl is-active ssh.socket

Ausgabe „inactive“: Debian 12 und 13, Ubuntu 22.04

SSH läuft hier als normaler Dienst und liest den Port beim Start aus sshd_config:

systemctl restart ssh

Ausgabe „active“: Ubuntu 24.04 und neuer

Hier lauscht systemd selbst auf dem Port und startet SSH erst, wenn eine Verbindung kommt. Den Port übernimmt systemd aus sshd_config, aber erst nach diesen beiden Befehlen:

systemctl daemon-reload
systemctl restart ssh.socket

Ein systemctl restart ssh allein reicht hier nicht, SSH bliebe auf dem alten Port.

Sonderfall: Socket ohne automatische Übernahme

Hast du die Socket-Aktivierung unter Debian selbst eingeschaltet oder läuft noch Ubuntu 22.10 bis 23.10, liest systemd den Port nicht aus sshd_config. Dann legst du ihn direkt im Socket fest:

mkdir -p /etc/systemd/system/ssh.socket.d
cat > /etc/systemd/system/ssh.socket.d/listen.conf <<'EOF'
[Socket]
ListenStream=
ListenStream=2222
EOF
systemctl daemon-reload
systemctl restart ssh.socket

Die leere Zeile ListenStream= entfernt den alten Port 22.

Kontrolle

ss -tlnp | grep ':2222 '

Als Prozess steht dort sshd oder bei Socket-Aktivierung systemd. Beides ist richtig.

5. In einer zweiten Sitzung testen

Lass die bestehende Verbindung offen. Öffne auf deinem Rechner ein zweites Terminal und verbinde dich über den neuen Port:

ssh -p 2222 root@DEINE-IP

Klappt das, entfernst du die alte Regel aus der Firewall. Welche es ist, zeigt ufw status numbered. Meist ist es eine dieser beiden:

ufw delete allow OpenSSH
ufw delete allow 22/tcp

Hast du vorübergehend beide Ports eingetragen, nimm jetzt Port 22 aus der Konfiguration und starte SSH wie in Schritt 4 neu. Danach kannst du die erste Sitzung schließen.

6. Fail2ban anpassen

Nutzt du Fail2ban, erkennt es Angriffe auf den neuen Port zwar weiterhin, sperrt die Angreifer aber nur für Port 22. Trag den neuen Port in /etc/fail2ban/jail.local ein. Gibt es die Datei schon mit einem Abschnitt [sshd], ergänzt du dort nur die Zeile port:

[sshd]
port = 2222
systemctl restart fail2ban
fail2ban-client status sshd

Bequemer verbinden

Damit du den Port nicht jedes Mal tippen musst, trägst du ihn in ~/.ssh/config auf deinem Rechner ein:

Host meinserver
    HostName DEINE-IP
    Port 2222
    User root

Danach reicht ssh meinserver. Der Eintrag gilt auch für scp und rsync. Ohne ihn schreibst du bei scp ein großes -P, etwa scp -P 2222 datei.txt root@DEINE-IP:/root/.

Fehlerbehebung

  • Connection refused: Der Server ist erreichbar, aber auf dem Port lauscht nichts. Meist wurde SSH nicht richtig neu gestartet, unter Ubuntu 24.04 fehlt oft daemon-reload oder der Neustart von ssh.socket. Prüfe mit ss -tlnp, auf welchem Port SSH lauscht. Hast du dich beim Testen mehrmals vertippt, kann auch Fail2ban deine IP gesperrt haben: fail2ban-client set sshd unbanip DEINE-EIGENE-IP.
  • Connection timed out: Die Verbindung kommt nicht an. Meist blockt eine Firewall den neuen Port, oder IP oder Port sind vertippt. Prüfe mit ufw status, ob der Port freigegeben ist, und im Panel unter Firewall, ob dort „Eingehend: Geschlossen“ ohne Regel für den Port eingestellt ist.
  • Login klappt nur ohne -p: SSH lauscht noch auf Port 22. Wiederhole Schritt 4.
  • Permission denied: Das hat mit dem Port nichts zu tun. Benutzer, Passwort oder Schlüssel stimmen nicht, siehe Mit SSH verbinden.

Ausgesperrt?

Über die Konsole im XionHosting-Panel kommst du ohne SSH auf den Server. Melde dich dort als root an, setze den Port in sshd_config zurück oder gib ihn in der Firewall frei und starte SSH wie in Schritt 4 neu. Kennst du das Root-Passwort nicht, kannst du es im Panel zurücksetzen. Der Server startet dabei neu.

Did this help?