15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
30.10.2024
1 +1

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 -y

Installieren Sie nun das OpenSSH-Serverpaket:

sudo apt install openssh-server -y

Der 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 ssh

Sie 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 ssh

Schritt 2: Die SSH-Konfigurationsdatei verstehen

Die primäre SSH-Daemon-Konfigurationsdatei befindet sich unter:

/etc/ssh/sshd_config

Diese 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_config

Die 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 22

Kommentieren 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 no

Wenn 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_user

Alternativ können Sie den Zugriff nach Gruppe einschränken:

AllowGroups sshusers

3.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 no

3.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 inet

Ihr 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 2

Schritt 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 -t

Wenn 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 reload

Wenn Sie den Standard-Port 22 beibehalten haben:

sudo ufw allow ssh
sudo ufw reload

Überprüfen Sie den aktuellen Firewall-Status:

sudo ufw status verbose

Wenn 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 enable

Schritt 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_ip

Dieser 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_keys

6.3 Schlüsselbasierte Anmeldung testen

Verbinden Sie sich von Ihrem Client-Rechner aus mit dem Server:

ssh -p 2222 username@your_server_ip

Sie 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 no

SSH neu starten, um die Änderungen anzuwenden:

sudo systemctl restart ssh

Schritt 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 -20

Fail2Ban 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 fail2ban

Erstellen Sie eine lokale Jail-Konfiguration für SSH:

sudo nano /etc/fail2ban/jail.local

Fügen Sie Folgendes hinzu:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600

Fail2Ban neu starten, um die Änderungen anzuwenden:

sudo systemctl restart fail2ban

OpenSSH aktuell halten

Aktualisieren Sie OpenSSH regelmäßig, um bekannte Sicherheitslücken zu schließen:

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

Verbindung zu Ihrem SSH-Server: Kurzübersicht

SzenarioBefehl
Standard-Port (22)ssh username@your_server_ip
Benutzerdefinierter Portssh -p 2222 username@your_server_ip
Bestimmte Identity-Dateissh -i ~/.ssh/id_ed25519 username@your_server_ip
Ausführliche Ausgabe (Debug)ssh -v username@your_server_ip
Dateien über SSH kopierenscp -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.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen