Server installieren und starten
sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh
Auf einem normalen Ubuntu-System lauscht das Paket schon unmittelbar nach der Installation. Der letzte Befehl schadet nicht, wenn es das bereits tut, und macht die Einrichtung eindeutig.
Prüfen, ob er lauscht
ss -tln | grep ':22'
Sie sollten eine Zeile für 0.0.0.0:22 und eine für [::]:22 sehen. Die Adresse zum Verbinden finden Sie so:
hostname -I
Warum ssh.service inaktiv sein kann, obwohl SSH funktioniert
Seit Ubuntu 22.10, einschließlich 24.04 und 26.04, hält standardmäßig eine Unit namens ssh.socket den Port 22 und startet ssh.service bei der ersten Verbindung. Direkt nach der Installation oder nach sudo systemctl stop ssh sehen Sie daher Folgendes und können sich trotzdem verbinden:
systemctl is-active ssh.socket # active
systemctl is-active ssh # inactive until the first connection
Das ist normal. Stoppen Sie den Dienst, während der Socket aktiv ist, warnt systemd, dass die auslösende Unit noch aktiv ist, und die nächste Verbindung startet ihn wieder. Um SSH wirklich zu stoppen, stoppen Sie beides:
sudo systemctl disable --now ssh ssh.socket
Wenn Sie das ältere Verhalten bevorzugen, bei dem sshd dauernd läuft und seinen Port bei jedem Neustart liest, schalten Sie den Socket ab:
sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh
Debian macht es standardmäßig umgekehrt: Unter Debian 13 ist ssh.service aktiviert und ssh.socket deaktiviert. Auch Ubuntu 22.04 nutzt den einfachen Dienst.
Firewall öffnen
ufw ist bei den meisten Installationen standardmäßig aus. Prüfen Sie es zuerst:
sudo ufw status
Steht dort Status: active, erlauben Sie SSH:
sudo ufw allow OpenSSH
Steht dort inactive und möchten Sie es einschalten, fügen Sie zuerst die Regel hinzu und aktivieren es danach. Die Reihenfolge ist wichtig, siehe SSH in ufw erlauben. Ein Cloud-Server hat meist eine zweite Firewall im Panel des Anbieters, die Sie dort öffnen.
Anmeldung testen
Von einem anderen Rechner:
ssh user@server
Die erste Verbindung zeigt den Fingerprint des Servers und bittet um Bestätigung. Scheitert die Verbindung, behandeln diese Anleitungen die häufigen Meldungen: Connection refused und Connection timed out.
Was dieser Fingerprint ist und wo er gespeichert wird, erklärt known_hosts und SSH-Host-Fingerprints.
Die Konfiguration ändern
Die Einstellungen stehen in /etc/ssh/sshd_config und in den Dateien unter /etc/ssh/sshd_config.d/. Eine Datei in diesem Ordner hat Vorrang vor der Hauptdatei, und manche Images bringen eine mit, die die Passwort-Anmeldung festlegt, prüfen Sie also, was wirklich gilt:
sudo sshd -T | grep -i -E '^(port|passwordauthentication) '
Prüfen Sie nach einer Änderung die Syntax und starten Sie dann neu:
sudo sshd -t
sudo systemctl restart ssh
Ein neuer Port oder eine neue Listen-Adresse ist anders, weil auch der Socket neu aufgebaut werden muss. Siehe SSH-Port ändern.
Als Nächstes sorgen Sie für einen Schlüssel statt eines Passworts: Schlüssel erzeugen, dann die Passwort-Anmeldung abschalten.
Fragen
Ist SSH unter Ubuntu standardmäßig installiert?
Der Client meist ja. Der Server hängt davon ab, wie das System installiert wurde: Ubuntu Desktop enthält ihn nicht, und der Server-Installer fragt danach. Prüfen Sie mit dpkg -l openssh-server.
Was ist der Unterschied zwischen ssh und sshd unter Ubuntu?
sshd ist das Serverprogramm. Unter Ubuntu heißt seine systemd-Unit ssh, und sshd ist ein Alias, der beim Aktivieren der Unit entsteht, verwenden Sie in Befehlen also ssh.
Quellen
- OpenSSH server, Ubuntu-Server-Dokumentation
- Launchpad-Bug 2069041: Änderung von Port erfordert daemon-reload
- ufw(8), Ubuntu-Handbuch
- sshd_config(5), OpenBSD-Handbuch