Wie man einen SSH-Server auf Debian installiert und konfiguriert (Vollständige Anleitung)
SSH (Secure Shell) ist eines der grundlegendsten Protokolle in der modernen Serververwaltung. Es bietet einen verschlüsselten, authentifizierten Kanal für den Fernzugriff auf und die Verwaltung von Linux-Servern — und ist damit ein unverzichtbares Werkzeug für Systemadministratoren, Entwickler und alle, die eine Remote-Maschine betreiben. Ob Sie eine VPS Hosting-Umgebung oder einen Dedicated Server verwalten — die ordnungsgemäße Installation und Absicherung Ihres SSH-Servers ist eine der ersten Aufgaben, die Sie erledigen sollten.
In diesem umfassenden Leitfaden erfahren Sie, wie Sie OpenSSH auf Debian installieren, sicher konfigurieren, schlüsselbasierte Authentifizierung einrichten und bewährte Härtungsmaßnahmen anwenden, um Ihren Server vor unbefugtem Zugriff zu schützen.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:
- Einen Debian-basierten Server (Debian 10 Buster, 11 Bullseye oder 12 Bookworm)
- Einen Nicht-Root-Benutzer mit
sudo-Rechten oder direkten Root-Zugriff für die Ersteinrichtung - Grundlegende Kenntnisse der Linux-Befehlszeile
- Netzwerkzugang zu Ihrem Server
Schritt 1: System aktualisieren und OpenSSH Server installieren
Bevor Sie Software installieren, empfiehlt es sich, den Paketindex zu aktualisieren und vorhandene Pakete auf ihre neuesten Versionen zu aktualisieren. Dies gewährleistet Kompatibilität und reduziert Sicherheitslücken.
sudo apt update && sudo apt upgrade -yInstallieren Sie nun das OpenSSH-Serverpaket:
sudo apt install openssh-server -yDer Paketmanager lädt OpenSSH zusammen mit allen erforderlichen Abhängigkeiten herunter und installiert es. Nach Abschluss der Installation wird der SSH-Dienst in der Regel automatisch gestartet.
Überprüfen, ob der SSH-Dienst läuft
Bestätigen Sie, dass der ssh-Dienst aktiv und aktiviert ist:
sudo systemctl status sshSie sollten eine Ausgabe ähnlich der folgenden sehen:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since ...Wenn der Dienst nicht läuft, starten Sie ihn manuell und aktivieren Sie ihn für den Start beim Booten:
sudo systemctl start ssh
sudo systemctl enable sshSchritt 2: Die SSH-Konfigurationsdatei verstehen
Die primäre SSH-Daemon-Konfigurationsdatei befindet sich unter:
/etc/ssh/sshd_configDiese Datei steuert nahezu jeden Aspekt des Verhaltens Ihres SSH-Servers — von dem Port, auf dem er lauscht, bis hin zu den zulässigen Authentifizierungsmethoden. Erstellen Sie vor jeglichen Änderungen eine Sicherungskopie der Originaldatei:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakÖffnen Sie die Datei nun mit einem Texteditor:
sudo nano /etc/ssh/sshd_configDie folgenden Abschnitte führen Sie durch die wichtigsten Konfigurationsoptionen.
Schritt 3: SSH-Konfiguration härten
3.1 Den Standard-SSH-Port ändern (Empfohlen)
Standardmäßig lauscht SSH auf Port 22. Dies ist allgemein bekannt, und automatisierte Bots scannen das Internet ständig nach offenen Port-22-Verbindungen, um Brute-Force-Angriffe zu versuchen. Das Ändern des Ports auf einen nicht standardmäßigen Wert reduziert dieses Rauschen erheblich.
Suchen Sie die folgende Zeile (sie kann mit # auskommentiert sein):
#Port 22Kommentieren Sie sie aus und ändern Sie den Wert:
Port 2222> Hinweis: Wählen Sie eine Portnummer zwischen 1024 und 65535, die nicht bereits von einem anderen Dienst verwendet wird. Gängige Alternativen sind 2222, 2200 oder 4422. Denken Sie daran, Ihre Firewall-Regeln entsprechend zu aktualisieren (siehe Schritt 5).
3.2 Root-Login deaktivieren (Dringend empfohlen)
Die direkte Root-Anmeldung über SSH ist ein erhebliches Sicherheitsrisiko. Wenn ein Angreifer das Root-Passwort errät oder per Brute-Force knackt, erhält er die vollständige Kontrolle über Ihren Server. Deaktivieren Sie es, indem Sie diese Direktive suchen und ändern:
PermitRootLogin noWenn Sie administrative Aufgaben ausführen müssen, melden Sie sich als normaler Benutzer an und erhöhen Sie die Berechtigungen mit sudo.
3.3 SSH-Zugriff auf bestimmte Benutzer beschränken
Sie können bestimmte Benutzerkonten auf eine Whitelist setzen, die sich über SSH anmelden dürfen. Dies verhindert, dass nicht autorisierte oder Systemkonten als Einstiegspunkte genutzt werden:
AllowUsers your_username deploy_userAlternativ können Sie den Zugriff nach Gruppe einschränken:
AllowGroups sshusers3.4 Passwort-Authentifizierung deaktivieren (Nach Einrichtung der Schlüssel-Auth)
Sobald die SSH-Schlüsselauthentifizierung funktioniert (siehe Schritt 6), deaktivieren Sie passwortbasierte Anmeldungen vollständig, um Brute-Force-Angriffsvektoren zu eliminieren:
PasswordAuthentication no3.5 Zusätzliche Härtungsdirektiven
Fügen Sie die folgenden Zeilen hinzu oder ändern Sie sie für eine robustere Sicherheitslage:
# Disable empty passwords
PermitEmptyPasswords no
# Limit authentication attempts per connection
MaxAuthTries 3
# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2
# Disable X11 forwarding if not needed
X11Forwarding no
# Use only SSH Protocol 2
Protocol 2
# Restrict to specific address family (IPv4 only example)
AddressFamily inetIhr abschließender relevanter /etc/ssh/sshd_config-Abschnitt sollte in etwa so aussehen:
Port 2222
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers your_username
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2Schritt 4: Konfiguration validieren und SSH neu starten
Testen Sie vor dem Neustart des Dienstes immer Ihre Konfigurationsdatei auf Syntaxfehler. Eine falsch konfigurierte sshd_config kann Sie von Ihrem Server aussperren:
sudo sshd -tWenn keine Fehler zurückgegeben werden, wenden Sie die Änderungen durch einen Neustart des SSH-Daemons an:
sudo systemctl restart sshÜberprüfen Sie, ob der Dienst sauber neu gestartet wurde:
sudo systemctl status ssh> ⚠️ Wichtig: Bevor Sie Ihre aktuelle SSH-Sitzung schließen, öffnen Sie ein zweites Terminalfenster und testen Sie die neue Konfiguration. Wenn etwas schiefgeht, haben Sie so noch eine aktive Sitzung, um das Problem zu beheben.
Schritt 5: Firewall-Regeln aktualisieren
Wenn Sie UFW (Uncomplicated Firewall) verwenden — das Standard-Firewall-Tool unter Debian — müssen Sie den Datenverkehr auf Ihrem neuen SSH-Port zulassen.
Wenn Sie den Port auf 2222 geändert haben:
sudo ufw allow 2222/tcp
sudo ufw reloadWenn Sie den Standard-Port 22 beibehalten haben:
sudo ufw allow ssh
sudo ufw reloadÜberprüfen Sie den aktuellen Firewall-Status:
sudo ufw status verboseWenn UFW noch nicht aktiviert ist, aktivieren Sie es (stellen Sie sicher, dass Ihr SSH-Port zuerst erlaubt ist, um eine Aussperrung zu vermeiden):
sudo ufw enableSchritt 6: SSH-Schlüsselbasierte Authentifizierung einrichten
Die SSH-Schlüsselauthentifizierung ist weitaus sicherer als die passwortbasierte Anmeldung. Sie verwendet asymmetrische Kryptographie — ein Schlüsselpaar bestehend aus einem privaten Schlüssel (geheim auf Ihrem Client-Rechner aufbewahrt) und einem öffentlichen Schlüssel (auf dem Server gespeichert). Selbst wenn ein Angreifer Ihren Benutzernamen kennt, kann er sich ohne den privaten Schlüssel nicht anmelden.
6.1 Ein SSH-Schlüsselpaar auf Ihrem Client-Rechner generieren
Führen Sie den folgenden Befehl auf Ihrem lokalen Rechner aus (nicht auf dem Server):
ssh-keygen -t ed25519 -C "your_email@example.com"> Warum Ed25519? Ed25519 ist ein moderner Elliptische-Kurven-Algorithmus, der im Vergleich zum älteren RSA-Algorithmus bessere Sicherheit und Leistung bietet. Wenn Ihr System ihn nicht unterstützt, verwenden Sie RSA mit einem 4096-Bit-Schlüssel: ssh-keygen -t rsa -b 4096
Wenn Sie dazu aufgefordert werden, wählen Sie einen Speicherort (Standard ist ~/.ssh/id_ed25519) und legen Sie eine starke Passphrase für eine zusätzliche Schutzebene fest.
6.2 Den öffentlichen Schlüssel auf Ihren Server kopieren
Verwenden Sie ssh-copy-id, um Ihren öffentlichen Schlüssel sicher auf den Server zu übertragen:
ssh-copy-id -p 2222 username@your_server_ipDieser Befehl fügt Ihren öffentlichen Schlüssel an ~/.ssh/authorized_keys auf dem Server mit den richtigen Berechtigungen an.
Wenn ssh-copy-id nicht verfügbar ist, können Sie es manuell durchführen:
# On your local machine, display your public key:
cat ~/.ssh/id_ed25519.pub
# On the server, add it to authorized_keys:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys6.3 Schlüsselbasierte Anmeldung testen
Verbinden Sie sich von Ihrem Client-Rechner aus mit dem Server:
ssh -p 2222 username@your_server_ipSie sollten zur Eingabe Ihrer Schlüssel-Passphrase aufgefordert werden (nicht Ihres Kontopassworts). Nach der Bestätigung sind Sie sicher angemeldet.
6.4 Passwort-Authentifizierung deaktivieren
Da die schlüsselbasierte Authentifizierung nun funktioniert, kehren Sie zu /etc/ssh/sshd_config zurück und stellen Sie sicher:
PasswordAuthentication noSSH neu starten, um die Änderungen anzuwenden:
sudo systemctl restart sshSchritt 7: SSH-Sicherheit überwachen und pflegen
Die Installation und Konfiguration von SSH ist keine einmalige Aufgabe. Laufende Überwachung ist unerlässlich, um Einbruchsversuche zu erkennen und eine sichere Umgebung aufrechtzuerhalten.
Fehlgeschlagene Anmeldeversuche prüfen
sudo journalctl -u ssh | grep "Failed password"Oder mit lastb fehlgeschlagene Anmeldeversuche anzeigen:
sudo lastb | head -20Fail2Ban installieren, um Brute-Force-Angriffe zu blockieren
Fail2Ban überwacht Protokolldateien und sperrt automatisch IP-Adressen, die bösartiges Verhalten zeigen (wie wiederholte fehlgeschlagene Anmeldeversuche):
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2banErstellen Sie eine lokale Jail-Konfiguration für SSH:
sudo nano /etc/fail2ban/jail.localFügen Sie Folgendes hinzu:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600Fail2Ban neu starten, um die Änderungen anzuwenden:
sudo systemctl restart fail2banOpenSSH aktuell halten
Aktualisieren Sie OpenSSH regelmäßig, um bekannte Sicherheitslücken zu schließen:
sudo apt update && sudo apt upgrade openssh-server -yVerbindung zu Ihrem SSH-Server: Kurzübersicht
| Szenario | Befehl |
|---|---|
| Standard-Port (22) | ssh username@your_server_ip |
| Benutzerdefinierter Port | ssh -p 2222 username@your_server_ip |
| Bestimmte Identity-Datei | ssh -i ~/.ssh/id_ed25519 username@your_server_ip |
| Ausführliche Ausgabe (Debug) | ssh -v username@your_server_ip |
| Dateien über SSH kopieren | scp -P 2222 file.txt username@your_server_ip:/path/ |
Die richtige Hosting-Umgebung für SSH wählen
Die Schritte in diesem Leitfaden gelten für jeden Debian-basierten Server, aber die Art des von Ihnen verwendeten Hostings beeinflusst, wie Sie auf Ihre Umgebung zugreifen und diese verwalten:
- VPS Hosting: Ein VPS mit cPanel oder anderen VPS Control Panels bietet Ihnen vollen Root-SSH-Zugriff zusammen mit einer grafischen Verwaltungsoberfläche — ideal für Benutzer, die sowohl Leistung als auch Komfort wünschen.
- Dedicated Server: Mit einem Dedicated Server haben Sie vollständige Kontrolle auf Hardware-Ebene, was die SSH-Konfiguration noch wichtiger macht, da Sie allein für die Sicherheit der Maschine verantwortlich sind.
- Shared Hosting: Shared Web Hosting-Pakete bieten in der Regel eingeschränkten oder keinen SSH-Zugriff, da die Umgebung unter mehreren Benutzern geteilt wird. Wenn SSH eine Anforderung ist, ist ein Upgrade auf einen VPS der empfohlene Weg.
Fazit
Die Installation und Konfiguration eines SSH-Servers auf Debian ist eine grundlegende Fähigkeit für jeden Systemadministrator oder Entwickler, der mit Remote-Linux-Servern arbeitet. Durch das Befolgen dieses Leitfadens haben Sie:
- ✅ OpenSSH Server auf Debian installiert
- ✅ Die SSH-Konfiguration gehärtet, indem Sie den Standard-Port geändert, den Root-Login deaktiviert und den Benutzerzugriff eingeschränkt haben
- ✅ SSH-Schlüsselbasierte Authentifizierung für passwortlose, sichere Anmeldungen eingerichtet
- ✅ Firewall-Regeln zum Schutz Ihres SSH-Ports konfiguriert
- ✅ Fail2Ban zur Abwehr von Brute-Force-Angriffen implementiert
- ✅ Eine Überwachungs- und Wartungsroutine etabliert
Ein ordnungsgemäß gesicherter SSH-Server reduziert Ihre Angriffsfläche erheblich und bietet Ihnen ein zuverlässiges, verschlüsseltes Gateway zur Verwaltung Ihrer Infrastruktur aus der Ferne. Ob Sie gerade mit Ihrem ersten Server beginnen oder eine Produktionsumgebung härten — diese Praktiken sind wesentliche Bausteine eines sicheren Linux-Systems.
