SSH unter Ubuntu verwenden und eine Verbindung zu einem Remote-Server herstellen
SSH (Secure Shell) ist die gängige Methode, um sich über eine verschlüsselte Verbindung bei entfernten Linux-Servern anzumelden. Von einer Ubuntu-Arbeitsstation oder einem anderen Client aus führst du ssh username@server_ip aus, bestätigst beim ersten Verbindungsaufbau den Host-Schlüssel und authentifizierst dich anschließend entweder mit einem Passwort oder vorzugsweise mit einem SSH-Schlüsselpaar.
Diese Anleitung erläutert die Verwendung des SSH-Clients, die Aktivierung von OpenSSH unter Ubuntu 24.04 LTS und 26.04 LTS, die Anmeldung mit SSH-Schlüsseln, die Konfiguration von sshd sowie häufig auftretende Verbindungsprobleme. Für einen umfassenderen Überblick über das Protokoll siehe SSH Essentials: Working with SSH Servers, Clients, and Keys.
Frontend-Anwendungen können direkt aus GitHub über eine Anwendungsplattform bereitgestellt werden, während die Plattform die Skalierung der Anwendung übernimmt.
Versionshinweis: Die nachfolgenden Befehle wurden unter Ubuntu 22.04 LTS, 24.04 LTS (Noble Numbat) und 26.04 LTS (Resolute Raccoon) überprüft. In aktuellen LTS-Versionen lautet die systemd-Unit ssh.service und wird mit systemctl … ssh verwaltet. OpenSSH unter Ubuntu 24.04 und 26.04 verarbeitet Drop-in-Konfigurationsdateien unter /etc/ssh/sshd_config.d/, bevor Werte aus der zentralen Datei sshd_config berücksichtigt werden. Cloud-Server-Images enthalten openssh-server häufig bereits standardmäßig und können den öffentlichen SSH-Schlüssel bei der Erstellung des Servers automatisch hinterlegen.
Die wichtigsten Punkte zu SSH unter Ubuntu
- Eine Verbindung wird von jedem geeigneten Client mit
ssh user@hosthergestellt. Mit-pgibst du einen abweichenden Port an, während-izur Auswahl eines bestimmten privaten Schlüssels dient. - Unter Ubuntu installierst du den SSH-Server mit
sudo apt install openssh-serverund aktivierst ihn anschließend mitsudo systemctl enable --now ssh. - Unter Ubuntu 24.04 und 26.04 sollten individuelle
sshd-Einstellungen in/etc/ssh/sshd_config.d/gespeichert werden, damit sie bei Paketaktualisierungen nicht überschrieben werden. - Führe
sudo sshd -taus, bevor dusudo systemctl reload sshverwendest. Dadurch lassen sich Syntaxfehler in der Konfiguration erkennen und das Risiko einer Aussperrung reduzieren. - Für neue Schlüssel empfiehlt sich
ssh-keygen -t ed25519anstelle von RSA. Den öffentlichen Schlüssel kannst du anschließend mitssh-copy-idübertragen. - Ist UFW aktiviert, kannst du SSH-Verbindungen mit
sudo ufw allow OpenSSHzulassen. - Sobald die Anmeldung per Schlüssel funktioniert, sollten auf produktiven Systemen
PasswordAuthentication noundPermitRootLogin noverwendet werden. - Verhindert eine fehlerhafte SSH-Konfiguration den normalen Zugriff, kann für den Notfall die webbasierte Konsole des Hosting-Anbieters verwendet werden.
Schnellstart: In 5 Schritten per SSH mit einem Remote-Server verbinden
- Terminal öffnen.
- Unter Linux/macOS: das Terminal öffnen.
- Unter Windows: PowerShell, WSL oder Git Bash verwenden.
- SSH-Befehl eingeben:
ssh username@your_server_ip
- Host-Fingerabdruck prüfen und bestätigen, wenn er beim ersten Verbindungsaufbau angezeigt wird.
- Authentifizieren, indem du dein Passwort eingibst oder einen SSH-Schlüssel verwendest.
- Verbindung beenden mit
exit.
Erfolgreiche SSH-Verbindung mit Ubuntu-Begrüßungsbildschirm und Shell-Eingabeaufforderung.
SSH unter Ubuntu 24.04 und 26.04 LTS aktivieren
Ubuntu-Server-Cloud-Images enthalten OpenSSH häufig bereits. Bei Ubuntu Desktop ist der SSH-Server dagegen oft nicht vorinstalliert und muss manuell eingerichtet werden. Das Vorgehen ist unter Ubuntu 22.04, 24.04 und 26.04 weitgehend identisch. Abweichungen werden an den entsprechenden Stellen erwähnt.
OpenSSH-Server installieren und starten
Führe auf dem System, das Remote-Verbindungen annehmen soll, folgende Befehle aus:
sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh
Überprüfe anschließend, ob der SSH-Dienst Verbindungen entgegennimmt:
sudo systemctl status ssh
ss -tlnp | grep ':22'
Als erwarteter Zustand sollte active (running) angezeigt werden. Außerdem sollte Port 22 den Status LISTEN besitzen.
SSH in der UFW-Firewall freigeben
Bei lokalen Ubuntu-Installationen kann UFW deaktiviert sein, auf Servern ist die Firewall jedoch häufig aktiv. Falls UFW eingeschaltet ist, solltest du SSH freigeben, bevor du von einem anderen System aus eine Verbindung aufbaust:
sudo ufw allow OpenSSH
sudo ufw status
Das Anwendungsprofil OpenSSH ist Port 22 zugeordnet. Wird SSH über einen anderen Port betrieben, muss dieser Port ausdrücklich freigegeben werden.
Unterschiede zwischen den Ubuntu-Versionen im Überblick
| Thema | Ubuntu 22.04 LTS | Ubuntu 24.04 / 26.04 LTS |
|---|---|---|
| systemd-Unit | ssh.service |
ssh.service |
| Konfigurations-Drop-ins | Include /etc/ssh/sshd_config.d/*.conf |
Identisch; bevorzugter Ort für eigene Regeln |
| Typische OpenSSH-Version | 8.9.x | 9.6.x (24.04), 10.x (26.04) |
Standardwert für PermitRootLogin |
häufig prohibit-password |
prohibit-password (Root-Zugriff nur per Schlüssel) |
| Desktop: SSH-Server vorinstalliert | Nein | Nein |
| Cloud-Server: SSH beim ersten Start | Meist ja, einschließlich SSH-Schlüssel | Meist ja, einschließlich SSH-Schlüssel |
Offizielle Referenz: OpenSSH-Server-Dokumentation von Ubuntu Server.
Für die erste Absicherung eines VPS kann nach erfolgreicher Einrichtung des SSH-Zugangs Initial Server Setup with Ubuntu verwendet werden.
Grundlegende SSH-Syntax
Mit dem Befehl ssh stellst du eine Verbindung zu einem entfernten System her.
Unter Windows kannst du OpenSSH verwenden, das in aktuellen Versionen von Windows 10 und Windows 11 enthalten ist. Alternativ stehen WSL oder Git for Windows zur Verfügung, das eine Bash-Umgebung inklusive ssh bereitstellt. Informationen zur Einrichtung über PowerShell findest du in der OpenSSH-Dokumentation von Microsoft.
Unter macOS und Linux steht ssh normalerweise bereits standardmäßig im Terminal zur Verfügung.
Grundlegende Syntax:
ssh remote_host
Ersetze remote_host durch die IP-Adresse oder den Domainnamen des entfernten Systems. Falls dein Benutzername auf dem Remote-System von deinem lokalen Benutzernamen abweicht, gib ihn ausdrücklich an:
ssh remote_username@remote_host
Nach dem Aufbau der Verbindung kann SSH nach deinem Passwort fragen, sofern noch keine schlüsselbasierte Authentifizierung eingerichtet wurde. Die Sitzung beendest du mit:
exit
Wie funktioniert SSH?
SSH stellt eine Verbindung zwischen einem Client (ssh) und einem Server (sshd) her.
Auf den meisten Ubuntu-Systemen wird sshd nach der Installation von openssh-server automatisch gestartet. Falls der Dienst beendet wurde, kannst du ihn manuell starten:
sudo systemctl start ssh
Kann das System nicht über das Netzwerk erreicht werden, sollte die vom Hosting-Anbieter bereitgestellte Out-of-Band-Konsole genutzt werden. Eine browserbasierte Serverkonsole ist besonders hilfreich, wenn SSH-Schlüssel, Firewall-Regeln oder eine fehlerhafte SSH-Konfiguration die normale Anmeldung verhindern.
Für einen Notfallzugriff ohne SSH-Client kann die browserbasierte Konsole des jeweiligen Hosting-Anbieters genutzt werden.
SSH unter Ubuntu konfigurieren
Die Konfiguration des SSH-Servers befindet sich in /etc/ssh/sshd_config. Unter Ubuntu 24.04 und 26.04 enthält die erste Zeile üblicherweise:
Include /etc/ssh/sshd_config.d/*.conf
Bei den meisten Direktiven verwendet OpenSSH den ersten gefundenen Wert. Eigene Einstellungen sollten deshalb möglichst in einer Drop-in-Datei wie /etc/ssh/sshd_config.d/99-custom.conf gespeichert werden, anstatt die zentrale Konfigurationsdatei direkt zu verändern.
Erstelle vor Änderungen eine Sicherungskopie:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)
Zu den wichtigen Einstellungen, die überprüft werden sollten, gehören:
Port 22
Port 22 sollte beibehalten werden, sofern kein dokumentierter Grund für eine Änderung besteht. Ein nicht standardmäßiger Port kann die Anzahl automatisierter Scans verringern, ersetzt jedoch weder SSH-Schlüssel noch Firewall-Regeln.
PermitRootLogin prohibit-password
Bei aktuellen Ubuntu-LTS-Versionen ist die direkte Root-Anmeldung mit einem Passwort in der Regel deaktiviert. Eine Anmeldung des Root-Benutzers mit einem SSH-Schlüssel kann jedoch weiterhin möglich sein. Für produktive Umgebungen sollte PermitRootLogin no verwendet werden, sobald ein Benutzer mit sudo-Rechten und funktionierendem Schlüsselzugriff vorhanden ist.
PubkeyAuthentication yes
PasswordAuthentication yes
KbdInteractiveAuthentication no
In älteren Anleitungen wird teilweise ChallengeResponseAuthentication verwendet. Ab OpenSSH 8.4+ sollte stattdessen KbdInteractiveAuthentication genutzt werden.
LogLevel INFO
Bei Problemen mit der Authentifizierung kann der Wert vorübergehend auf DEBUG gesetzt werden. Nach Abschluss der Fehlersuche sollte die ursprüngliche Einstellung wiederhergestellt werden.
Nach Änderungen solltest du die Konfiguration zunächst prüfen und SSH anschließend neu laden:
sudo sshd -t
sudo systemctl reload ssh
Lasse während des Tests eine zweite Terminalverbindung geöffnet, damit du Änderungen rückgängig machen kannst, falls die neue Konfiguration den Zugriff verhindert.
~/.ssh/config für mehrere SSH-Verbindungen verwenden
Erstelle oder bearbeite auf deinem lokalen System die Datei ~/.ssh/config:
Host dev-server
HostName 192.168.1.10
User devuser
Port 2222
IdentityFile ~/.ssh/dev_key
Anschließend kannst du die Verbindung so herstellen:
ssh dev-server
Diese Konfiguration ist besonders praktisch, wenn du mehrere Benutzer, SSH-Schlüssel oder Ports verwaltest.
Mit SSH-Schlüsseln anmelden
Die Anmeldung per Passwort kann für Tests verwendet werden. Schlüsselbasierte Authentifizierung ist jedoch schneller und bietet einen besseren Schutz gegen Brute-Force-Angriffe.
So funktioniert die Authentifizierung mit SSH-Schlüsseln
Du erzeugst einen privaten Schlüssel, der auf deinem Computer verbleibt, und einen öffentlichen Schlüssel, der auf dem Server gespeichert wird. Der Server fordert den Client dazu auf, nachzuweisen, dass er den privaten Schlüssel besitzt, der zum öffentlichen Schlüssel in ~/.ssh/authorized_keys gehört.
SSH-Schlüssel unter Ubuntu 24.04 und 26.04 erstellen
Erzeuge das SSH-Schlüsselpaar auf dem Gerät, von dem aus du dich verbindest, beispielsweise auf einem Laptop oder einer Arbeitsstation:
ssh-keygen -t ed25519
Drücke Enter, um den Standardspeicherort ~/.ssh/id_ed25519 zu verwenden. Optional kannst du den privaten Schlüssel mit einer Passphrase schützen.
Für ältere Systeme, die Ed25519 nicht unterstützen, kann ein RSA-Schlüssel erzeugt werden:
ssh-keygen -t rsa -b 4096
Überprüfe anschließend die Dateiberechtigungen:
ls -l ~/.ssh/
Private SSH-Schlüssel sollten den Modus 600 besitzen. Auf dem Server sollte auch authorized_keys mit 600 geschützt sein, während das Verzeichnis .ssh den Modus 700 verwenden sollte.
Öffentlichen SSH-Schlüssel auf den Server kopieren
Falls eine Anmeldung per Passwort noch möglich ist:
ssh-copy-id username@remote_host
Viele Hosting-Plattformen ermöglichen es außerdem, SSH-Schlüssel bereits bei der Erstellung eines Servers oder später über die Verwaltungsoberfläche des Anbieters hinzuzufügen.
Wichtige SSH-Optionen auf der Client-Seite
Zu den nützlichen SSH-Optionen gehören:
Abweichender Port, der mit der Einstellung Port in sshd_config übereinstimmen muss:
ssh -p port_number remote_username@remote_host
Ein geänderter SSH-Port bietet hauptsächlich zusätzliche Verschleierung und keine starke Sicherheitsmaßnahme. Für einen wirksamen Schutz sollten schlüsselbasierte Authentifizierung, PermitRootLogin no und geeignete Firewall-Regeln kombiniert werden.
Einen einzelnen Befehl auf dem Remote-System ausführen:
ssh remote_host "command_to_run"
X11-Weiterleitung, sofern sie in sshd_config auf beiden Seiten aktiviert ist:
ssh -X remote_host
Ausführliche Debug-Ausgabe:
ssh -vvv remote_username@remote_host
Häufige SSH-Fehler und Fehlerbehebung
| Fehler | Mögliche Ursache | Mögliche Lösung |
|---|---|---|
| Connection refused | sshd läuft nicht oder der Port ist blockiert |
sudo systemctl start ssh; sudo ufw allow OpenSSH |
| Permission denied (publickey) | SSH-Schlüssel fehlt oder Berechtigungen sind fehlerhaft | chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys |
| Connection timed out | Firewall, falsche IP-Adresse oder Netzwerkproblem | ping / traceroute; Hosting-Firewall und UFW prüfen |
| Host key verification failed | Server wurde neu erstellt oder die IP-Adresse erneut verwendet | ssh-keygen -R hostname_or_ip |
| Too many authentication failures | Der SSH-Agent bietet zu viele Schlüssel an | ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 user@host |
Erweiterte SSH-Probleme
| Fehler | Mögliche Ursache | Erweiterte Lösung |
|---|---|---|
| Connection closed by remote host | MaxAuthTries oder Zeitüberschreitung bei Inaktivität |
sshd_config prüfen; sudo journalctl -u ssh ausführen |
Bad owner or permissions on .ssh |
Berechtigungen sind zu weit gefasst | chmod 700 ~/.ssh; für private Schlüssel chmod 600 verwenden |
| Authentication refused | Passwort- und Schlüsselauthentifizierung sind beide deaktiviert | PubkeyAuthentication yes sicherstellen oder Passwortanmeldung vorübergehend wieder aktivieren |
| Cannot resolve hostname | Fehler in der DNS-Angabe | IP-Adresse verwenden oder /etc/hosts korrigieren |
SSH-Protokolle können auf dem Server live verfolgt werden:
sudo journalctl -fu ssh
Passwort-Authentifizierung für SSH deaktivieren
Nachdem du überprüft hast, dass die Anmeldung mit SSH-Schlüsseln zuverlässig funktioniert, kannst du die reine Passwortauthentifizierung deaktivieren.
Stelle vor dem Abschalten von Passwörtern sicher, dass dein öffentlicher Schlüssel in ~/.ssh/authorized_keys hinterlegt ist. Halte die Webkonsole des Hosting-Anbieters verfügbar, bis die Anmeldung mit SSH-Schlüssel erfolgreich getestet wurde.
Unter Ubuntu 24.04 und 26.04 kannst du eine entsprechende Drop-in-Konfigurationsdatei erstellen oder bearbeiten:
sudo nano /etc/ssh/sshd_config.d/99-disable-password.conf
Füge folgende Einstellungen hinzu:
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
Überprüfe die Konfiguration und lade SSH anschließend neu:
sudo sshd -t
sudo systemctl reload ssh
Teste die neue Konfiguration aus einem neuen Terminalfenster, bevor du deine bestehende SSH-Sitzung beendest.
Best Practices für mehr SSH-Sicherheit
- Verwende Ed25519- oder 4096-Bit-RSA-Schlüssel und vermeide bei öffentlich erreichbaren Servern eine ausschließliche Passwortanmeldung.
- Konfiguriere nach der Einrichtung eines Benutzers mit sudo-Rechten
PermitRootLogin no. - Halte
openssh-serveraktuell, beispielsweise mitsudo apt upgrade openssh-server. - Beschränke SSH-Zugriffe nach Möglichkeit mit UFW oder einer Firewall des Hosting-Anbieters auf bekannte IP-Adressen.
- Ziehe fail2ban als zusätzlichen Schutz vor Brute-Force-Angriffen in Betracht.
- Übertrage Dateien sicher über SSH mit SFTP/SCP.
SSH unter Windows, Linux und macOS verwenden
Windows: PowerShell, WSL und Git Bash unterstützen sowohl ssh user@server_ip als auch ssh-keygen.
macOS / Linux: Verwende das integrierte Terminal. Die gleichen SSH-Befehle können dort ebenfalls eingesetzt werden.
SSH-Schlüssel erzeugen:
ssh-keygen -t ed25519
Häufig gestellte Fragen zu SSH
1. Wie verwendet man SSH im Ubuntu-Terminal?
Öffne das Terminal und gib folgenden Befehl ein:
ssh username@server_ip
Ersetze username durch den Benutzernamen auf dem entfernten System und server_ip durch dessen öffentliche IP-Adresse oder Hostnamen. Beim ersten Verbindungsaufbau gibst du yes ein, um den Host-Schlüssel zu akzeptieren. Anschließend meldest du dich mit deinem Passwort oder, sofern eingerichtet, mit einem SSH-Schlüssel an.
2. Wie richtet man SSH unter Ubuntu Linux ein?
Installiere OpenSSH auf dem Server und aktiviere anschließend den Dienst:
sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh
Falls UFW aktiv ist, führe sudo ufw allow OpenSSH aus. Auf dem Client erstellst du anschließend mit ssh-keygen -t ed25519 einen Schlüssel und überträgst den öffentlichen Schlüssel mit ssh-copy-id user@server_ip auf den Server.
3. Wie aktiviert man OpenSSH unter Ubuntu?
Das Serverpaket heißt openssh-server, während die Client-Werkzeuge im Paket openssh-client enthalten sind, das häufig bereits installiert ist. Installiere den Server mit apt, starte ssh.service und kontrolliere den Status mit sudo systemctl status ssh. Unter Ubuntu Desktop 24.04 oder 26.04 muss der SSH-Server installiert werden, bevor eine Remote-Anmeldung möglich ist.
4. Wie prüft man, ob SSH unter Ubuntu aktiviert ist?
sudo systemctl status ssh
Achte auf den Status active (running). Kontrolliere außerdem, ob der SSH-Port Verbindungen entgegennimmt:
ss -tlnp | grep ':22'
Von einem anderen Computer kannst du die Verbindung mit ssh -v user@host oder nc -zv host 22 testen.
5. Warum funktioniert SSH unter Ubuntu nicht?
Typische Ursachen sind:
openssh-serverist nicht installiert, insbesondere bei Ubuntu Desktop. Installiere das Paket mitapt.sshdläuft nicht. Starte den Dienst mitsudo systemctl start ssh.- Die Firewall blockiert Port 22. Führe
sudo ufw allow OpenSSHaus oder gib den SSH-Port in der Firewall des Hosting-Anbieters frei. - IP-Adresse, Benutzername oder SSH-Schlüssel sind falsch. Verwende
ssh -vvv, um ausführlichere Diagnoseinformationen anzuzeigen. - Die Konfiguration in
sshd_configist fehlerhaft. Führesudo sshd -taus und behebe gemeldete Fehler, bevor du den SSH-Dienst neu lädst.
Falls SSH nicht erreichbar ist, die virtuelle Maschine aber weiterhin läuft, kann die Serverkonsole des Hosting-Anbieters verwendet werden.
Fazit
SSH ist weiterhin die Standardmethode für die Remote-Verwaltung von Linux-Systemen, da die Verbindung verschlüsselt ist, nur geringe Ressourcen benötigt und sowohl in Cloud-Umgebungen als auch in lokalen Netzwerken funktioniert. Unter Ubuntu 24.04 und 26.04 sollte openssh-server installiert, individuelle Konfigurationen in sshd_config.d gespeichert, Ed25519 für neue SSH-Schlüssel bevorzugt und jede Konfigurationsänderung vor dem Neuladen des SSH-Dienstes mit sshd -t überprüft werden.


