SSH auf Ubuntu sicher installieren und konfigurieren
Lerne, wie du OpenSSH auf Ubuntu installierst, Ed25519-Keys erstellst, den Root-Login deaktivierst und deinen Server vor Angriffen schützt.

Auf dieser Seite
SSH ist der verschlüsselte Kanal, über den du einen Linux-Rechner aus der Ferne administrierst: Terminal, Dateitransfer oder Tunnel für andere Dienste. Auf Ubuntu Desktop ist der SSH-Server nicht standardmäßig installiert, auf Server-Images hingegen meist schon vorhanden. In dieser Anleitung installierst du ihn, verbindest dich von deinem Computer mit einem Key und sicherst ihn ab.
Installation #
sudo apt update
sudo apt install openssh-server
Der Dienst startet automatisch. Überprüfe den Status:
sudo systemctl status ssh

Erschrick auf Ubuntu 24.04 nicht, wenn der Status vor der ersten Verbindung inactive mit der Zeile TriggeredBy: ssh.socket angezeigt wird: Ab Ubuntu 22.10 wird SSH über den Socket beim ersten Verbindungsversuch gestartet und sudo systemctl status ssh.socket muss aktiv sein. Um den Fernzugriff komplett zu deaktivieren, zum Beispiel während Wartungsarbeiten, nutze sudo systemctl disable --now ssh.socket ssh.
Wenn die UFW-Firewall aktiv ist, erlaube SSH zuerst, bevor du die aktuelle Sitzung schließt:
sudo ufw allow OpenSSH
sudo ufw enable
Von einem anderen Computer aus verbindest du dich mit:
ssh nomeutente@indirizzo-ip
Der Befehl funktioniert unter Linux, macOS sowie Windows 10 und 11 gleichermaßen, da diese den SSH-Client bereits vorinstalliert haben: Öffne einfach das Windows-Terminal oder die PowerShell. Bei der ersten Verbindung wirst du aufgefordert, den Fingerabdruck des Servers zu bestätigen: Gib yes ein.
Die Keys: So funktionieren sie #
Ein Schlüsselpaar besteht aus einem privaten Teil, der auf deinem Computer bleibt und niemals weitergegeben werden darf, und einem öffentlichen Teil, den du auf den Server kopierst. Wenn du dich verbindest, prüft der Server, ob du den richtigen privaten Key besitzt, ohne dass dabei Geheimnisse über das Netzwerk übertragen werden.
Ein Schlüsselpaar besteht aus einem privaten Teil (Private Key), der auf deinem Computer bleibt und niemandem gegeben werden darf, und einem öffentlichen Teil (Public Key), den du auf den Server kopierst. Wenn du dich verbindest, prüft der Server, ob du den richtigen privaten Schlüssel besitzt, ohne dass dabei Geheimnisse über das Netzwerk übertragen werden.
Ein Schlüsselpaar generieren #
Auf deinem Computer, nicht auf dem Server:
ssh-keygen -t ed25519 -C "il-mio-portatile"

Ed25519 ist heute der empfohlene Algorithmus: kurze Keys, schnelle Verifizierung, hohe Sicherheit. Nutze RSA nur, wenn du dich mit alten Systemen verbinden musst, die kein Ed25519 kennen, und in diesem Fall mit mindestens 4096 Bit.
Wenn du nach einer Passphrase gefragt wirst, gib eine ein: Sie schützt den Key, falls jemand physischen Zugriff auf deinen Computer erhält. Damit du sie nicht jedes Mal neu eintippen musst, übernimmt das SSH-Agent die Verwaltung und merkt sie sich bis zum Ende der Sitzung.
Den öffentlichen Schlüssel auf den Server kopieren #
ssh-copy-id nomeutente@indirizzo-ip
Er fragt dich nur einmal nach dem Passwort und setzt die richtigen Berechtigungen. Unter Windows gibt es ssh-copy-id diesen Weg nicht: Öffne die Datei C:\Users\<nome>\.ssh\id_ed25519.pub, kopiere den Inhalt und füge ihn am Ende der Datei ~/.ssh/authorized_keys auf dem Server ein.
Teste die Verbindung mit dem Key sofort in einem zweiten Fenster, während das erste noch offen ist. Erst wenn alles funktioniert, solltest du die Passwörter sperren.
Die Konfiguration absichern #
Die Servereinstellungen befinden sich in /etc/ssh/sshd_config. In neueren Ubuntu-Versionen ist es besser, diese Datei nicht direkt zu ändern, sondern stattdessen eine eigene Datei in /etc/ssh/sshd_config.d/ zu erstellen, die zusätzlich eingelesen wird:
sudo nano /etc/ssh/sshd_config.d/99-sicurezza.conf
Empfohlener Inhalt:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3
Was jede Zeile bewirkt:
| Einstellung | Effekt |
|---|---|
PermitRootLogin no | Niemand kann sich direkt als root anmelden: Du meldest dich mit deinem User an und nutzt dann sudo |
PasswordAuthentication no | Anmeldung nur per Key möglich, Passwörter werden abgelehnt |
KbdInteractiveAuthentication no | Schließt einen weiteren Weg, der den Zugriff via Passwort ermöglichen würde |
MaxAuthTries 3 | Begrenzt die Anzahl der Anmeldeversuche pro Verbindung |
X11Forwarding no | Deaktiviert das X11-Forwarding, was fast niemand benötigt |
Bevor du die Änderungen anwendest, prüfe die Syntax:
sudo sshd -t
Wenn nichts ausgegeben wird, ist alles korrekt und du kannst den Dienst neu laden:
sudo systemctl reload ssh
Schutz vor automatisierten Angriffen #
Den Port ändern (von 22 auf eine hohe Nummer) macht den Server nicht sicherer, reduziert aber das “Rauschen” in den Logs massiv, da fast alle automatisierten Scans nur den Standardport prüfen. Dies wird über Port 2222 in deiner Konfigurationsdatei eingestellt; denke daran, den neuen Port in der Firewall zu öffnen (sudo ufw allow 2222/tcp). Ab Ubuntu 22.10 (einschließlich 24.04) sind nach der Änderung zudem sudo systemctl daemon-reload und sudo systemctl restart ssh.socket erforderlich, sonst hört der Server weiterhin auf Port 22.
Fail2ban sperrt IP-Adressen vorübergehend, wenn sie sich mehrmals hintereinander falsch anmelden:
sudo apt install fail2ban
Mit der Standardkonfiguration ist SSH bereits geschützt. Die gesperrten IPs kannst du mit sudo fail2ban-client status sshd einsehen.
Die Anzahl der erlaubten Benutzer zu begrenzen ist einfach und effektiv: Mit AllowUsers nomeutente in der Konfiguration können keine anderen Accounts eine Verbindung aufbauen, selbst wenn sie über korrekte Anmeldedaten verfügen.
Die Client-Konfigurationsdatei #
Auf dem Computer, von dem aus du dich verbindest, erspart dir die Datei ~/.ssh/config das Merken von Adressen und Ports:
Host server-casa
HostName 192.168.1.50
User alessandro
Port 2222
IdentityFile ~/.ssh/id_ed25519
Ab diesem Moment reicht ssh server-casa aus. Der Name funktioniert auch mit scp und rsync.
Dateien übertragen #
scp documento.pdf server-casa:/home/alessandro/
Für ganze Ordner oder häufig wiederholende Kopieraktionen nutze rsync, da nur die geänderten Teile übertragen werden:
rsync -avz --progress cartella/ server-casa:/percorso/di/destinazione/
Wenn du lieber ein Programm mit Benutzeroberfläche nutzt: FileZilla und WinSCP verbinden sich via SFTP unter Verwendung der gleichen Anmeldedaten und desselben Schlüssels.
Häufig gestellte Fragen #
Wenn ich Passwörter deaktiviere und meinen privaten Schlüssel verliere, schließe ich mich dann selbst aus? #
Ja, und genau dieses Risiko musst du vorher managen. Zwei Vorsichtsmaßnahmen: Füge auf dem Server die öffentlichen Schlüssel aller Geräte hinzu, von denen aus du dich verbinden willst, und bewahre eine Kopie des privaten Schlüssels an einem sicheren Ort auf, zum Beispiel in deinem Passwort-Manager. Falls der Server eine virtuelle Maschine bei einem Provider ist, gibt es meistens auch eine Notfall-Konsole im Web-Panel.
Ed25519 oder RSA? #
Nutze nach Möglichkeit Ed25519: Es ist moderner, die Schlüssel sind kürzer und die Verifizierung geht schneller. RSA mit 4096 Bit nur für alte Systeme, die Ed25519 nicht unterstützen.
Bringt es etwas, den Port zu ändern? #
Die Sicherheit erhöht das nicht wirklich, da ein gezielter Scan den Dienst trotzdem findet. Es reduziert jedoch automatisierte Angriffsversuche erheblich und hält die Logs übersichtlich: Wenn ein Versuch auftaucht, weißt du, dass er Aufmerksamkeit verdient.
Wie verbinde ich mich, wenn sich meine Heim-IP ändert? #
Mit einem Dynamic-DNS-Dienst, der einen festen Namen mit deiner Adresse verknüpft und diesen automatisch aktualisiert, sobald sie sich ändert. Viele Router unterstützen das bereits in den Einstellungen. Alternativ lässt dich eine VPN wie Tailscale auf den Server zugreifen, ohne dass du Ports am Router öffnen musst.
Was bedeutet die Warnung, dass sich der Host-Key geändert hat? #
Dass die Identität des Servers nicht mehr mit der beim ersten Verbindungsaufbau gespeicherten übereinstimmt. Das kann normal sein, wenn du das System neu installiert oder die Maschine gewechselt hast, oder es ist ein Hinweis darauf, dass jemand versucht, die Verbindung abzufangen. Finde erst den Grund heraus; erst danach entfernst du den alten Eintrag mit ssh-keygen -R indirizzo-ip.

