SSH auf Ubuntu sicher einrichten und konfigurieren: Vollständige Anleitung für Remote-Zugriff und Sicherheit (2025)

目次

1. Einführung

Die Konfiguration von SSH unter Ubuntu ist von entscheidender Bedeutung für die Verwaltung von Remote-Servern. SSH (Secure Shell) ist ein Protokoll, das eine sichere, verschlüsselte Kommunikation ermöglicht und weit verbreitet zum Zugriff auf Server, zur Ausführung von Befehlen und zum Übertragen von Dateien aus der Ferne verwendet wird.

In diesem Artikel erklären wir detailliert, wie man SSH unter Ubuntu einrichtet – von den grundlegenden Installationsschritten bis hin zu fortgeschrittenen Sicherheitsmaßnahmen.

1.1 Warum SSH unter Ubuntu einrichten?

1.1.1 Was ist SSH?

SSH (Secure Shell) ist ein Protokoll zur sicheren Kommunikation über Netzwerke. Es wird typischerweise für das Einloggen auf Remote-Servern, den Dateitransfer und das Tunneling (Port-Forwarding) genutzt. Im Gegensatz zu traditionellen Diensten wie Telnet oder FTP verschlüsselt SSH sämtliche Übertragungen und bietet somit ein hohes Maß an Sicherheit.

1.1.2 Typische Anwendungsfälle für SSH unter Ubuntu

Folgende Szenarien machen die Remote-Verwaltung von Ubuntu mit SSH sinnvoll:

  • Verwaltung von Cloud-Servern: Bei Cloud-Diensten wie AWS, GCP oder Vultr erfolgt der Zugriff auf Server in der Regel per SSH.
  • Remote-Zugriff im LAN: Zugriff und Fernwartung von Servern oder Entwicklungsrechnern im internen Netzwerk über SSH.
  • Management von IoT-Geräten: Fernsteuerung von Embedded Devices wie dem Raspberry Pi via SSH.

In der Standardkonfiguration von Ubuntu ist der SSH-Server deaktiviert. Für die Nutzung von SSH müssen Sie diesen daher manuell installieren und korrekt konfigurieren.

2. Grundlegende SSH-Konfiguration

Um SSH unter Ubuntu zu verwenden, müssen Sie den SSH-Server (OpenSSH) installieren und passend konfigurieren. In diesem Abschnitt erklären wir die Installation, Basiseinstellungen, Firewall-Konfiguration und Verbindungsaufbau im Detail.

2.1 Installation und Start von OpenSSH

2.1.1 Was ist OpenSSH?

OpenSSH (Open Secure Shell) ist eine Open-Source-Implementierung des SSH-Protokolls. Es bietet nicht nur Remote-Zugriff, sondern unterstützt auch sichere Dateiübertragungen (SCP und SFTP) sowie Port-Forwarding.

2.1.2 OpenSSH unter Ubuntu installieren

Standardmäßig ist der SSH-Server unter Ubuntu nicht vorinstalliert. Installieren Sie ihn mit folgendem Befehl:

sudo apt update && sudo apt install -y openssh-server

Dieser Befehl aktualisiert die Paketlisten und installiert den OpenSSH-Server.

2.1.3 SSH-Server starten und Autostart aktivieren

Nach der Installation können Sie den SSH-Server starten und für den automatischen Start konfigurieren:

sudo systemctl enable --now ssh

Mit der Option enable wird der SSH-Dienst auch beim Systemstart automatisch ausgeführt.

2.1.4 Funktion von SSH prüfen

Überprüfen Sie, ob der SSH-Server läuft, mit:

systemctl status ssh

Eine typische Ausgabe sieht so aus:

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago

Falls inactive (dead) oder failed angezeigt wird, starten Sie SSH manuell:

sudo systemctl start ssh

2.2 Firewall (UFW) konfigurieren

Unter Ubuntu steht mit ufw (Uncomplicated Firewall) eine einfach zu bedienende Firewall zur Verfügung. Um SSH-Verbindungen zuzulassen, muss UFW entsprechend eingerichtet werden.

2.2.1 UFW-Status prüfen

Überprüfen Sie zunächst den aktuellen Status der Firewall:

sudo ufw status

Beispielausgabe (UFW deaktiviert):

Status: inactive

Beispielausgabe (UFW aktiviert):

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere

2.2.2 SSH-Verbindungen zulassen

Um den Standardport 22 für SSH freizuschalten:

sudo ufw allow ssh

Alternativ können Sie explizit den Port angeben:

sudo ufw allow 22/tcp

2.2.3 UFW aktivieren

Wenn UFW deaktiviert ist, können Sie sie mit folgendem Befehl aktivieren:

sudo ufw enable

Aktivieren Sie UFW erst, wenn Sie sichergestellt haben, dass SSH-Verbindungen erlaubt sind – ansonsten kann ein Remote-Zugriff unterbunden werden.

2.2.4 Einstellungen prüfen

Überprüfen Sie die Regeln erneut:

sudo ufw status verbose

Beispielausgabe

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

Wenn diese Ausgaben erscheinen, sind SSH-Verbindungen erlaubt.

2.3 Grundlegende SSH-Verbindung herstellen

Wenn der SSH-Server läuft, können Sie von einem Client aus eine Verbindung herstellen.

2.3.1 Verbindung von Linux/macOS

Öffnen Sie ein Terminal und führen Sie diesen Befehl aus:

ssh benutzername@server-ip-adresse

Beispiel:

ssh user@192.168.1.100

Beim erstmaligen Verbinden erscheint ggf. diese Warnung:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

Geben Sie yes ein und bestätigen Sie mit Enter, um die Verbindung herzustellen.

2.3.2 Verbindung von Windows

Unter Windows können Sie entweder PowerShell oder PuTTY verwenden.

Mit PowerShell:
Ab Windows 10 ist der SSH-Client bereits integriert. Nutzen Sie diesen Befehl:

ssh benutzername@server-ip-adresse

Mit PuTTY:

  1. Laden Sie PuTTY von der offiziellen Website herunter und installieren Sie es.
  2. Öffnen Sie PuTTY und geben Sie unter Host Name (or IP address) die IP-Adresse des Servers ein.
  3. Stellen Sie Connection type auf SSH und klicken Sie auf Open.
  4. Geben Sie Benutzernamen und Passwort ein.

Zusammenfassung

In diesem Abschnitt haben wir die grundlegende Einrichtung von SSH unter Ubuntu behandelt:

  • Installation und Start von OpenSSH
  • SSH-Zugriff in der UFW-Firewall erlauben
  • SSH-Verbindung mit Linux/macOS und Windows

3. SSH-Sicherheit erhöhen

SSH ist ein praktisches Tool für Remote-Verbindungen, bringt jedoch auch potenzielle Sicherheitsrisiken mit sich. Angreifer nutzen häufig Brute-Force-Attacken oder Portscans, um SSH-Server zu kompromittieren. Deshalb sind zusätzliche Sicherheitsmaßnahmen unerlässlich.

3.1 Root-Login verbieten

Standardmäßig ist der Root-Login über SSH unter Ubuntu teilweise erlaubt. Da das Root-Konto umfassende Rechte besitzt und ein attraktives Ziel für Angreifer darstellt, sollten Sie Root-Logins deaktivieren und stattdessen normale Benutzerkonten verwenden.

3.1.1 Konfiguration

  1. Bearbeiten Sie die SSH-Konfigurationsdatei /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Suchen Sie die Zeile und ändern Sie sie zu PermitRootLogin no.
PermitRootLogin no
  1. Speichern Sie die Datei und starten Sie den SSH-Dienst neu:
sudo systemctl restart ssh
  1. Überprüfen Sie, ob die Änderung übernommen wurde:
sudo grep PermitRootLogin /etc/ssh/sshd_config

Wenn PermitRootLogin no angezeigt wird, ist die Einstellung aktiv.

3.2 Passwort-Authentifizierung deaktivieren & SSH-Key-Authentifizierung

Die Verwendung von Public-Key-Authentifizierung statt Passwörtern erhöht die Sicherheit erheblich, da so Brute-Force-Angriffe erschwert werden.

3.2.1 SSH-Schlüssel erzeugen

Erstellen Sie auf Ihrem lokalen Rechner ein Schlüsselpaar:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

Dadurch entstehen zwei Dateien:

  • Privater Schlüssel (id_rsa): bleibt auf dem lokalen Rechner (niemals weitergeben!)
  • Öffentlicher Schlüssel (id_rsa.pub): wird auf den Server übertragen

3.2.2 Öffentlichen Schlüssel auf Server kopieren

Übertragen Sie den Schlüssel mit:

ssh-copy-id benutzername@server-ip-adresse

3.2.3 Passwort-Authentifizierung deaktivieren

Öffnen Sie /etc/ssh/sshd_config und ändern Sie:

PasswordAuthentication no

Starten Sie SSH neu, um die Änderung zu übernehmen:

sudo systemctl restart ssh

3.3 SSH-Zugang auf bestimmte Benutzer beschränken

Sie können definieren, welche Benutzer sich per SSH anmelden dürfen.

3.3.1 Konfiguration

  1. Bearbeiten Sie /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Fügen Sie die erlaubten Nutzer hinzu:
AllowUsers benutzer1 benutzer2
  1. Starten Sie SSH neu:
sudo systemctl restart ssh

3.4 SSH-Port ändern

Der Standardport 22 ist ein bekanntes Angriffsziel. Sie können den Port wechseln, um die Angriffsfläche zu verringern.

3.4.1 Port-Änderung

  1. Öffnen Sie /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Ändern Sie z.B. Port 22 zu Port 2200:
Port 2200
  1. Speichern Sie die Datei und starten Sie SSH neu:
sudo systemctl restart ssh

3.4.2 Firewall für neuen Port konfigurieren

sudo ufw allow 2200/tcp

Prüfen Sie die Firewall-Regeln:

sudo ufw status

3.5 Schutz vor Brute-Force mit Fail2Ban

Fail2Ban erkennt wiederholte Fehlversuche beim SSH-Login und blockiert die Angreifer temporär.

3.5.1 Installation

sudo apt install fail2ban -y

3.5.2 Konfiguration

Kopieren Sie die Konfiguration und passen Sie sie an:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Passen Sie z. B. den Port und die Sperrparameter an:

[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600

3.5.3 Fail2Ban neu starten

sudo systemctl restart fail2ban

3.5.4 Blockierte IPs prüfen

sudo fail2ban-client status sshd

Zusammenfassung

In diesem Abschnitt haben wir Methoden zur Absicherung von SSH vorgestellt:

  • Root-Login verbieten
  • Passwort-Authentifizierung deaktivieren und Public-Key-Authentifizierung nutzen
  • Zugriff nur für bestimmte Benutzer erlauben
  • SSH-Port ändern
  • Fail2Ban für automatischen Schutz bei Angriffen einsetzen

Mit diesen Maßnahmen erhöhen Sie die Sicherheit Ihrer SSH-Umgebung deutlich.

4. Erweiterte SSH-Konfiguration

Nachdem die Basis- und Sicherheitskonfiguration abgeschlossen ist, können Sie SSH mit weiteren Funktionen noch flexibler und sicherer nutzen. In diesem Abschnitt behandeln wir ssh.socket ab Ubuntu 22.10, SSH-Tunneling, parallele Ports und IP-Restriktionen.

4.1 Verwendung von ssh.socket ab Ubuntu 22.10

Seit Ubuntu 22.10 kann SSH über ssh.socket dynamisch beim Verbindungsaufbau gestartet werden. Dies spart Ressourcen.

4.1.1 Status von ssh.socket prüfen

sudo systemctl status ssh.socket

Beispielausgabe (aktiv):

● ssh.socket - OpenSSH Server Socket
   Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Fri 2025-02-28 12:00:00 UTC

4.1.2 Aktivieren/Deaktivieren von ssh.socket

Aktivieren:

sudo systemctl enable --now ssh.socket

Deaktivieren und stattdessen klassischen Service nutzen:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service

4.2 SSH-Tunneling (Port-Forwarding)

SSH-Tunnel bieten eine sichere Verbindung zwischen Client und Server, um Dienste zu schützen.

4.2.1 Lokales Port-Forwarding

ssh -L 3306:localhost:3306 benutzer@server-ip

4.2.2 Reverse-Port-Forwarding

ssh -R 8080:localhost:80 benutzer@server-ip

4.2.3 Dynamisches Port-Forwarding (SOCKS-Proxy)

ssh -D 1080 benutzer@server-ip

4.3 Mehrere SSH-Ports konfigurieren

Sie können SSH für verschiedene Netzwerke auf mehreren Ports lauschen lassen.

4.3.1 Konfiguration

  1. Bearbeiten Sie /etc/ssh/sshd_config:
Port 22
Port 2200
  1. Neustart des SSH-Servers:
sudo systemctl restart ssh
  1. Neuen Port in UFW freigeben:
sudo ufw allow 2200/tcp

4.4 SSH-Zugriff nur für bestimmte IP-Adressen erlauben

Erlauben Sie SSH-Zugriffe nur aus bestimmten IPs, um Sicherheit zu erhöhen.

4.4.1 /etc/hosts.allow konfigurieren

sudo nano /etc/hosts.allow

Fügen Sie z.B. hinzu:

sshd: 192.168.1.100

4.4.2 /etc/hosts.deny konfigurieren

sudo nano /etc/hosts.deny
sshd: ALL

Zusammenfassung

In diesem Abschnitt haben wir fortgeschrittene SSH-Konfigurationen vorgestellt:

  • ssh.socket ab Ubuntu 22.10
  • Sicheres SSH-Tunneling
  • Mehrere Ports konfigurieren
  • Zugriff auf bestimmte IPs beschränken

Diese Einstellungen verbessern Sicherheit und Flexibilität.

5. SSH-Fehlerbehebung

Manchmal kommt es trotz richtiger Konfiguration zu Verbindungsproblemen. Hier finden Sie typische Fehler und Lösungen.

5.1 Verbindung zu SSH nicht möglich

Mögliche Fehlerquellen:

5.1.1 SSH-Dienst läuft nicht

sudo systemctl status ssh

Lösung:

  • Falls inactive (dead) oder failed erscheint, starten Sie SSH neu:
sudo systemctl restart ssh
  • Autostart ggf. aktivieren:
sudo systemctl enable ssh

5.1.2 Port nicht offen

Verwenden Sie den richtigen Port:

ssh -p 2200 benutzer@server-ip

Offene Ports prüfen:

sudo netstat -tulnp | grep ssh
ss -tulnp | grep ssh

5.1.3 Firewall-Einstellungen prüfen

sudo ufw status

Lösung bei fehlender Freigabe:

sudo ufw allow 22/tcp
sudo ufw allow 2200/tcp

5.2 Authentifizierungsfehler

5.2.1 Falscher Benutzer oder Passwort

ssh benutzer@server-ip

5.2.2 Public-Key-Authentifizierung falsch konfiguriert

Prüfen Sie ~/.ssh/authorized_keys auf dem Server:

cat ~/.ssh/authorized_keys

5.2.3 Falsche Dateirechte im .ssh-Verzeichnis

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 755 /home/benutzer

5.3 Instabile oder abgebrochene Verbindungen

Oft sind Zeitüberschreitungen schuld.

5.3.1 Serverseitig: ClientAliveInterval anpassen

ClientAliveInterval 60
ClientAliveCountMax 3

Danach SSH-Dienst neu starten.

5.3.2 Clientseitig: Einstellungen in ~/.ssh/config

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

5.4 SSH-Logs prüfen

5.4.1 Live-Logs anzeigen

sudo journalctl -u ssh -f

5.4.2 Alte Logs durchsuchen

sudo cat /var/log/auth.log | grep ssh
sudo grep "Failed password" /var/log/auth.log

Zusammenfassung

Dieser Abschnitt behandelte die häufigsten SSH-Probleme und Lösungen:

  • Prüfen, ob SSH läuft
  • Ports und Firewall überprüfen
  • Public-Key-Konfiguration und Dateirechte prüfen
  • Timeout-Probleme und Log-Analyse

Mit diesen Tipps lösen Sie SSH-Probleme schnell und effizient.

6. FAQ (Häufige Fragen)

Hier finden Sie Antworten auf die häufigsten Fragen zur SSH-Konfiguration unter Ubuntu.

6.1 SSH-Verbindung wird wegen Timeout getrennt – was tun?

6.1.1 Serverseitige Einstellung

Bearbeiten Sie /etc/ssh/sshd_config:

ClientAliveInterval 60
ClientAliveCountMax 3

SSH neu starten.

6.1.2 Einstellung auf dem Client

Fügen Sie Ihrer ~/.ssh/config folgendes hinzu:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

6.2 Passwort vergessen – wie wieder Zugang erhalten?

6.2.1 Mit physischem Zugang

  1. Im Recovery-Modus starten (über das GRUB-Menü).
  2. Mit folgendem Befehl Passwort zurücksetzen:
passwd benutzername
  1. System neu starten.

6.2.2 Ohne physischen Zugang (z.B. Cloud-Server)

  • Verwenden Sie die Konsole Ihres VPS-Anbieters.
  • Nutzen Sie Public-Key-Authentifizierung, falls eingerichtet.

6.3 SSH unter Windows nutzen?

6.3.1 Mit PowerShell

Ab Windows 10 integriert:

ssh benutzername@server-ip

6.3.2 Mit PuTTY

  1. Laden Sie PuTTY herunter und installieren Sie es.
  2. Tragen Sie die Server-IP unter Host Name ein.
  3. Wählen Sie SSH als Verbindungstyp und klicken Sie auf Open.
  4. Benutzernamen und Passwort eingeben.

6.4 SSH unter Ubuntu WSL (Windows Subsystem for Linux)?

Installieren Sie den SSH-Server mit:

sudo apt update && sudo apt install openssh-server

In /etc/ssh/sshd_config aktivieren Sie:

PasswordAuthentication yes

Starten Sie den Dienst manuell:

sudo service ssh start

6.5 Zusätzliche SSH-Sicherheitsmaßnahmen nach der Einrichtung?

6.5.1 Fail2Ban einsetzen

sudo apt install fail2ban -y

Konfigurieren Sie /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
sudo systemctl restart fail2ban

6.5.2 SSH-Port ändern

Port 2200

Freigabe im UFW:

sudo ufw allow 2200/tcp

6.6 SSH-Logs in Echtzeit prüfen?

sudo journalctl -u ssh -f

Oder nachträglich:

sudo cat /var/log/auth.log | grep ssh

6.7 SSH komfortabler nutzen?

6.7.1 Schneller Login über .ssh/config

Host meinserver
    HostName 192.168.1.100
    User user
    Port 2200
    IdentityFile ~/.ssh/id_rsa

Danach reicht:

ssh meinserver

6.7.2 Verwendung von ssh-agent

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

Zusammenfassung

In diesem Abschnitt haben wir häufige Fragen und Praxistipps zu SSH unter Ubuntu beantwortet:

  • Timeout-Probleme und deren Lösung
  • Passwort-Wiederherstellung
  • SSH unter Windows & WSL
  • Zusätzliche Sicherheitsmaßnahmen
  • Logs und Komfortfunktionen

Nutzen Sie diese Tipps für eine sichere und effiziente Verwaltung Ihrer Remote-Server.

Verwandte Artikel

Verwandte

1. Einführung Durch die Verwendung von SSH auf Ubuntu können Sie sicher auf Server und PCs aus der Ferne zugreifen und […]