↓Zum Hauptinhalt springen
Alemasone

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.

7 Min. Lesezeit Aktualisiert am
Terminal mit einer aktiven SSH-Verbindung zu einem Ubuntu-Server
Auf dieser Seite
Ein SSH-Server, der über das Internet erreichbar ist, erhält bereits wenige Minuten nach dem Einschalten automatische Anmeldeversuche. Zwei Einstellungen minimieren das Risiko fast vollständig: Zugriff nur mit Keys und Root-Login deaktiviert. Das dauert fünf Minuten und sollte vor allem anderen erledigt werden.

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

Ubuntu-Terminal mit dem Ergebnis von systemctl status ssh und dem Dienst im Status active running
Die Zeile, die du prüfen musst, ist die mit active (running)

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
Aktiviere UFW nicht, bevor du OpenSSH erlaubt hast. Die laufende Verbindung wird getrennt und du bist ausgesperrt. Bei einem Remote-Server, an den du nicht physisch herantreten kannst, ist dies der teuerste Fehler.

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"

Terminal mit ssh-keygen -t ed25519: Passphrase, Pfad für die beiden Dateien und Key-Fingerabdruck
Der Befehl erstellt zwei Dateien: den privaten Schlüssel und den öffentlichen Schlüssel mit der Endung .pub

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:

EinstellungEffekt
PermitRootLogin noNiemand kann sich direkt als root anmelden: Du meldest dich mit deinem User an und nutzt dann sudo
PasswordAuthentication noAnmeldung nur per Key möglich, Passwörter werden abgelehnt
KbdInteractiveAuthentication noSchließt einen weiteren Weg, der den Zugriff via Passwort ermöglichen würde
MaxAuthTries 3Begrenzt die Anzahl der Anmeldeversuche pro Verbindung
X11Forwarding noDeaktiviert 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
Lass die aktuelle Sitzung offen, während du die Änderungen anwendest, und teste den neuen Login in einem anderen Fenster. Falls etwas schiefgelaufen ist, hast du noch eine aktive Verbindung, um nachzubessern.

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.

Weiterlesen