---
title: "SSH auf Ubuntu sicher installieren und konfigurieren"
description: "Lerne, wie du OpenSSH auf Ubuntu installierst, Ed25519-Keys erstellst, den Root-Login deaktivierst und deinen Server vor Angriffen schützt."
url: "https://www.alemasone.com/de/ssh-ubuntu-sicher-installieren-konfigurieren/"
language: "de"
published: 2024-12-02
updated: 2026-09-19
categories: ["Sicherheit Und Datenschutz"]
translations:
  it: "https://www.alemasone.com/it/configurare-ssh-ubuntu/"
  en: "https://www.alemasone.com/en/securely-install-configure-ssh-ubuntu/"
  es: "https://www.alemasone.com/es/instalar-configurar-ssh-ubuntu-seguro/"
  fr: "https://www.alemasone.com/fr/installer-configurer-ssh-ubuntu-securite/"
  pt: "https://www.alemasone.com/pt/configurar-ssh-ubuntu-seguranca/"
---

# SSH auf Ubuntu sicher installieren und konfigurieren

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

```bash
sudo apt update
sudo apt install openssh-server
```

Der Dienst startet automatisch. Überprüfe den Status:

```bash
sudo systemctl status ssh
```

![Ubuntu-Terminal mit dem Ergebnis von systemctl status ssh und dem Dienst im Status active running](systemctl-status-ssh-ubuntu.png "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:

```bash
sudo ufw allow OpenSSH
sudo ufw enable
```

> **Aktiviere UFW nicht, bevor du [OpenSSH](https://www.openssh.com/) 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:

```bash
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:

```bash
ssh-keygen -t ed25519 -C "il-mio-portatile"
```

![Terminal mit ssh-keygen -t ed25519: Passphrase, Pfad für die beiden Dateien und Key-Fingerabdruck](ssh-keygen-ed25519-ubuntu.png "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

```bash
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:

```bash
sudo nano /etc/ssh/sshd_config.d/99-sicurezza.conf
```

Empfohlener Inhalt:

```text
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:

```bash
sudo sshd -t
```

Wenn nichts ausgegeben wird, ist alles korrekt und du kannst den Dienst neu laden:

```bash
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](https://github.com/fail2ban/fail2ban)** sperrt IP-Adressen vorübergehend, wenn sie sich mehrmals hintereinander falsch anmelden:

```bash
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:

```text
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

```bash
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:

```bash
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](/de/self-hosted-vpn-beste-loesungen-netzwerk/) 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`.
