15%

15% auf alle Hosting-Dienste sparen

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

Benutze den Code:

Skills
Anfangen
29.10.2024

Wie man SSH auf Linux installiert und konfiguriert: Ein vollständiger Sicherheitsleitfaden für 2025

SSH ist der mit Abstand kritischste Zugangspunkt auf Ihrem Server. Eine falsch konfigurierte SSH-Einrichtung kann von automatisierten Bots, die das Internet scannen, in weniger als fünf Minuten kompromittiert werden. Ob Sie eine VPS Hosting-Umgebung, einen Bare-Metal-Rechner oder eine Cloud-Instanz verwalten – SSH vom ersten Tag an korrekt abzusichern ist nicht verhandelbar.

In diesem Leitfaden erfahren Sie, wie Sie OpenSSH installieren, sicher konfigurieren, schlüsselbasierte Authentifizierung implementieren und produktionsreife Härtungstechniken anwenden – alles auf einem Linux-Server im Jahr 2025.

Was ist SSH und warum ist es wichtig?

SSH (Secure Shell) ist ein kryptografisches Netzwerkprotokoll, das es Benutzern ermöglicht, sich über ein unsicheres Netzwerk wie das Internet sicher mit einem Remote-System zu verbinden. Alle zwischen Client und Server übertragenen Daten sind vollständig verschlüsselt, was es zum Industriestandard für die Remote-Serververwaltung macht.

Standardmäßig läuft SSH auf Port 22 und unterstützt:

  • Remote-Anmeldung bei Servern und virtuellen Maschinen
  • Sicherer Dateitransfer über SCP und SFTP
  • Remote-Befehlsausführung und skriptbasierte Automatisierung
  • Port-Weiterleitung und Tunneling für sicheres Datenrouting
  • X11-Weiterleitung für den Zugriff auf grafische Anwendungen

SSH ist Ihre primäre administrative Schnittstelle. Behandeln Sie sie entsprechend.

Schritt 1: OpenSSH-Server installieren

Die meisten modernen Linux-Distributionen werden mit vorinstalliertem OpenSSH ausgeliefert. Falls es fehlt, installieren Sie es mit dem entsprechenden Paketmanager Ihrer Distribution.

Ubuntu / Debian

sudo apt update
sudo apt install openssh-server -y

CentOS / RHEL / AlmaLinux / Rocky Linux

sudo yum install openssh-server -y

Fedora

sudo dnf install openssh-server -y

Arch Linux

sudo pacman -S openssh

Nach der Installation sind sowohl der OpenSSH-Server (sshd) als auch der OpenSSH-Client verfügbar, sodass Sie eingehende Verbindungen akzeptieren und sich mit anderen Remote-Servern verbinden können.

Schritt 2: Den SSH-Dienst starten und aktivieren

Nach der Installation müssen Sie den SSH-Daemon (sshd) starten und so konfigurieren, dass er beim Systemstart automatisch gestartet wird.

Den SSH-Dienst starten

sudo systemctl start ssh

SSH für den Autostart beim Booten aktivieren

sudo systemctl enable ssh

Überprüfen, ob der Dienst läuft

sudo systemctl status ssh

Eine fehlerfreie Ausgabe zeigt active (running) in grün an. Wenn Fehler auftreten, prüfen Sie Ihre Systemprotokolle mit journalctl -xe für Diagnoseinformationen.

Schritt 3: Die SSH-Konfigurationsdatei verstehen

Das Verhalten von SSH wird durch eine einzige primäre Konfigurationsdatei gesteuert:

/etc/ssh/sshd_config

Diese Datei steuert alles – den Listening-Port, Authentifizierungsmethoden, erlaubte Benutzer, Anmeldebeschränkungen und mehr. Erstellen Sie immer eine Sicherungskopie, bevor Sie Änderungen vornehmen:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Öffnen Sie die Datei mit Ihrem bevorzugten Texteditor:

sudo nano /etc/ssh/sshd_config

Überprüfen Sie nach jeder Änderung immer die Konfigurationssyntax, bevor Sie den Dienst neu starten, um zu vermeiden, dass Sie sich aussperren:

sudo sshd -t

Wenn keine Fehler zurückgegeben werden, wenden Sie die Änderungen an:

sudo systemctl restart ssh

Schritt 4: Wesentliche SSH-Konfigurationsänderungen

4.1 Den Standard-SSH-Port ändern

Port 22 ist der erste Port, den automatisierte Scanner und Brute-Force-Bots anvisieren. Ihn auf einen nicht standardmäßigen Port zu ändern, reduziert den Lärm in Ihren Protokollen erheblich und verringert die Anfälligkeit für opportunistische Angriffe.

Suchen Sie diese Zeile in sshd_config:

#Port 22

Kommentieren Sie sie aus und legen Sie einen benutzerdefinierten Port fest (wählen Sie eine Zahl zwischen 1024 und 65535, die noch nicht in Verwendung ist):

Port 2222

Speichern Sie die Datei, validieren Sie und starten Sie SSH neu:

sudo sshd -t && sudo systemctl restart ssh

> Wichtig: Aktualisieren Sie Ihre Firewall-Regeln unmittelbar nach der Portänderung (siehe Schritt 6). Andernfalls sperren Sie sich vom Server aus.

4.2 Root-Anmeldung über SSH deaktivieren

Die direkte Root-Anmeldung über SSH zu erlauben ist eine der häufigsten und gefährlichsten Fehlkonfigurationen. Wenn ein Angreifer das Root-Passwort errät oder per Brute-Force knackt, hat er die vollständige, uneingeschränkte Kontrolle über Ihr System.

Suchen Sie diese Direktive:

PermitRootLogin yes

Ändern Sie sie in:

PermitRootLogin no

Benutzer sollten sich mit einem Standardkonto anmelden und bei Bedarf Berechtigungen mit sudo eskalieren. Dies schafft eine wesentliche Prüfschicht – jede privilegierte Aktion wird einem benannten Benutzerkonto zugeordnet.

4.3 Schlüsselbasierte Authentifizierung erzwingen und Passwörter deaktivieren

Passwortbasierte Authentifizierung ist von Natur aus anfällig für Brute-Force-Angriffe. SSH-Schlüsselpaare – eine mathematisch verknüpfte Kombination aus öffentlichem und privatem Schlüssel – sind exponentiell sicherer.

Suchen und setzen Sie die folgenden Direktiven:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no

> Warnung: Deaktivieren Sie die Passwortauthentifizierung erst, nachdem Sie die schlüsselbasierte Anmeldung erfolgreich getestet haben. Das Deaktivieren von Passwörtern ohne einen funktionierenden Schlüssel sperrt Sie dauerhaft aus.

4.4 Weitere Härtungsdirektiven

Fügen Sie diese Einstellungen in sshd_config hinzu oder ändern Sie sie für eine gehärtete Produktionskonfiguration:

# Restrict login to specific users (replace 'youruser' with actual usernames)
AllowUsers youruser

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

# Limit authentication attempts per connection
MaxAuthTries 3

# Disable empty passwords
PermitEmptyPasswords no

# Disable X11 forwarding if not needed
X11Forwarding no

# Use only modern, secure protocol version
Protocol 2

# Restrict SSH to specific network interface (optional, replace with your IP)
ListenAddress 0.0.0.0

Schritt 5: SSH-Schlüsselpaare generieren und bereitstellen

SSH-Schlüsselauthentifizierung ersetzt Passwörter durch kryptografischen Identitätsnachweis. So richten Sie es korrekt ein.

Schritt 5.1: Ein Schlüsselpaar auf Ihrem lokalen Rechner generieren

Führen Sie diesen Befehl auf Ihrer lokalen Workstation aus (nicht auf dem Server):

ssh-keygen -t ed25519 -C "your_email@example.com"

> Warum Ed25519? Ed25519 ist ein moderner Elliptische-Kurven-Algorithmus, der schneller, sicherer ist und kürzere Schlüssel erzeugt als der ältere RSA-Algorithmus. Er ist die empfohlene Wahl im Jahr 2025.

Wenn Ihr System oder Ihre Tools RSA aus Kompatibilitätsgründen erfordern, verwenden Sie einen 4096-Bit-Schlüssel:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Sie werden aufgefordert:

  1. Einen Dateipfad zu wählen (drücken Sie Enter, um den Standard ~/.ssh/id_ed25519 zu akzeptieren)
  2. Eine optionale Passphrase festzulegen (dringend empfohlen – diese verschlüsselt Ihren privaten Schlüssel im Ruhezustand)

Dies generiert zwei Dateien:

  • ~/.ssh/id_ed25519 — Ihr privater Schlüssel. Teilen Sie ihn niemals. Kopieren Sie ihn niemals auf einen Server.
  • ~/.ssh/id_ed25519.pub — Ihr öffentlicher Schlüssel. Dieser wird auf Servern installiert.

Schritt 5.2: Den öffentlichen Schlüssel auf den Server kopieren

Verwenden Sie ssh-copy-id, um Ihren öffentlichen Schlüssel sicher auf den Remote-Server zu übertragen:

ssh-copy-id -p 2222 username@your_server_ip

Ersetzen Sie username durch Ihren Server-Kontonamen und your_server_ip durch die tatsächliche IP-Adresse.

Dieser Befehl fügt Ihren öffentlichen Schlüssel automatisch mit korrekten Berechtigungen an ~/.ssh/authorized_keys auf dem Server an.

Manuelle Methode (falls ssh-copy-id nicht verfügbar ist):

cat ~/.ssh/id_ed25519.pub | ssh username@your_server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Schritt 5.3: Schlüsselbasierte Anmeldung testen

Bevor Sie die Passwortauthentifizierung deaktivieren, überprüfen Sie, ob die schlüsselbasierte Anmeldung funktioniert:

ssh -p 2222 username@your_server_ip

Wenn Sie sich erfolgreich verbinden, ohne nach einem Passwort gefragt zu werden (oder nur nach Ihrer Schlüssel-Passphrase), funktioniert die schlüsselbasierte Authentifizierung korrekt. Jetzt können Sie die Passwortauthentifizierung in sshd_config sicher deaktivieren.

Schritt 6: Ihre Firewall für SSH konfigurieren

Eine Firewall ist Ihre erste Verteidigungslinie. Konfigurieren Sie sie immer so, dass nur der von Ihnen verwendete SSH-Port erlaubt ist.

UFW verwenden (Ubuntu / Debian)

# Allow your custom SSH port
sudo ufw allow 2222/tcp

# Enable the firewall
sudo ufw enable

# Verify the rules
sudo ufw status verbose

firewalld verwenden (CentOS / RHEL / Fedora)

# Add the custom SSH port
sudo firewall-cmd --permanent --add-port=2222/tcp

# Remove the default port 22 (optional, after confirming new port works)
sudo firewall-cmd --permanent --remove-service=ssh

# Reload firewall rules
sudo firewall-cmd --reload

SSH-Zugriff nach IP-Adresse einschränken

Für maximale Sicherheit beschränken Sie den SSH-Zugriff ausschließlich auf bekannte, vertrauenswürdige IP-Adressen:

# UFW example: allow SSH only from a specific IP
sudo ufw allow from 203.0.113.10 to any port 2222 proto tcp

Dies ist besonders effektiv auf Dedicated Servers, bei denen Sie den gesamten administrativen Zugriff von einem festen Büro oder einem VPN-IP-Bereich aus steuern.

Schritt 7: Erweiterte Sicherheitsmaßnahmen

7.1 Fail2Ban installieren und konfigurieren

Fail2Ban überwacht SSH-Protokolldateien und sperrt automatisch IP-Adressen, die Anzeichen von Brute-Force-Aktivität zeigen.

# Install Fail2Ban
sudo apt install fail2ban -y   # Ubuntu/Debian
sudo yum install fail2ban -y   # CentOS/RHEL

# Create a local configuration file
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Bearbeiten Sie /etc/fail2ban/jail.local und konfigurieren Sie den SSH-Jail:

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

Fail2Ban starten und aktivieren:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

7.2 SSH-Konfigurationsdatei für clientseitiges Management verwenden

Erstellen oder bearbeiten Sie auf Ihrem lokalen Rechner ~/.ssh/config, um Verbindungen zu vereinfachen und Sicherheitseinstellungen durchzusetzen:

Host myserver
    HostName your_server_ip
    User youruser
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 60
    ServerAliveCountMax 3

Mit dieser Konfiguration können Sie sich einfach durch Eingabe von Folgendem verbinden:

ssh myserver

7.3 Zwei-Faktor-Authentifizierung (2FA) für SSH

Für Umgebungen, die ein Höchstmaß an Zugriffssicherheit erfordern – wie Produktionsdatenbanken, Finanzsysteme oder compliance-regulierte Infrastruktur – sollten Sie erwägen, TOTP-basierte Zwei-Faktor-Authentifizierung mit Google Authenticator oder Authy zusammen mit SSH-Schlüsseln hinzuzufügen.

sudo apt install libpam-google-authenticator -y
google-authenticator

Konfigurieren Sie dann PAM und sshd_config, um sowohl einen Schlüssel als auch ein Einmalpasswort zu verlangen. Dies schafft einen echten Multi-Faktor-Authentifizierungsablauf.

Schritt 8: SSH testen und Fehler beheben

Überprüfen Sie nach Abschluss Ihrer Konfiguration systematisch, ob alles wie erwartet funktioniert.

Verbindungstest

ssh -p 2222 -v username@your_server_ip

Das Flag -v aktiviert den ausführlichen Modus und gibt detaillierte Debugging-Informationen zu jeder Phase der Verbindung aus – unschätzbar wertvoll für die Diagnose von Authentifizierungsfehlern.

Häufige Probleme und Lösungen

ProblemWahrscheinliche UrsacheLösung
Connection refusedSSH läuft nicht oder falscher Portsystemctl status ssh und Firewall-Regeln prüfen
Permission denied (publickey)Schlüssel nicht in authorized_keys oder falsche BerechtigungenÜberprüfen, ob ~/.ssh/authorized_keys mit chmod 600 vorhanden ist
Host key verification failedServer-Fingerabdruck hat sich geändertAlten Eintrag aus ~/.ssh/known_hosts entfernen
Connection timed outFirewall blockiert den PortUFW/firewalld-Regeln und Cloud-Sicherheitsgruppen prüfen
Ausgesperrt nach KonfigurationsänderungFehlkonfiguration in sshd_configKonsolen-/KVM-Zugriff verwenden, um Änderungen rückgängig zu machen

Diagnosebefehle

# Check SSH service status
sudo systemctl status ssh

# View real-time SSH logs
sudo journalctl -u ssh -f

# Check which port SSH is listening on
sudo ss -tlnp | grep sshd

# Test configuration file syntax
sudo sshd -t

Vollständige gehärtete sshd_config-Referenz

Hier ist eine produktionsbereite sshd_config, die alle Sicherheitsempfehlungen aus diesem Leitfaden enthält:

# Network
Port 2222
ListenAddress 0.0.0.0
Protocol 2

# Authentication
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
MaxAuthTries 3
LoginGraceTime 30

# Session Management
ClientAliveInterval 300
ClientAliveCountMax 2
MaxSessions 5

# Access Control
AllowUsers youruser

# Features (disable what you don't need)
X11Forwarding no
AllowTcpForwarding no
GatewayPorts no
PermitUserEnvironment no

# Logging
SyslogFacility AUTH
LogLevel VERBOSE

Warum Ihre Hosting-Infrastruktur für SSH-Sicherheit wichtig ist

Die Sicherheit Ihrer SSH-Konfiguration existiert nicht isoliert – sie hängt stark von der zugrunde liegenden Infrastruktur ab. Eine ordnungsgemäß gehärtete SSH-Einrichtung ist am effektivsten, wenn sie auf einem Server bereitgestellt wird, der bereits Folgendes bietet:

  • DDoS-Schutz, um volumetrische Angriffe abzufangen, bevor sie Ihren SSH-Port erreichen
  • NVMe-Speicher für schnelle Protokollschreibvorgänge und schnelle Fail2Ban-Reaktionszeiten
  • 1 Gbps Netzwerkports zur Gewährleistung der Verbindungsstabilität unter Last
  • KVM/Konsolenzugriff als Out-of-Band-Wiederherstellungsmethode, falls Sie sich versehentlich aussperren

AlexHosts VPS Hosting-Pläne beinhalten all das oben Genannte, mit vollem Root-Zugriff und Unterstützung für benutzerdefinierte Firewall-Konfigurationen – was sie ideal für die Bereitstellung der in diesem Leitfaden beschriebenen gehärteten SSH-Einrichtung macht.

Wenn Sie ein Control Panel zur Verwaltung Ihres Servers neben SSH benötigen, erkunden Sie VPS Control Panels für Optionen einschließlich cPanel, Plesk und DirectAdmin. Für Teams, die mehrere Web-Projekte verwalten, bietet Shared Web Hosting eine verwaltete Umgebung, in der SSH-Härtung auf Infrastrukturebene gehandhabt wird.

Und wenn Sie SSL-gesicherte Webdienste neben Ihrem SSH-gehärteten Server betreiben, stellt die Kombination Ihrer Einrichtung mit einer vertrauenswürdigen SSL Certificates-Lösung eine Ende-zu-Ende-Verschlüsselung für alle Ihre öffentlich zugänglichen Dienste sicher.

SSH-Sicherheits-Checkliste

Verwenden Sie diese Checkliste, bevor Sie Ihre SSH-Konfiguration als produktionsbereit betrachten:

  • [ ] OpenSSH-Server installiert und läuft
  • [ ] Standard-Port 22 auf einen benutzerdefinierten Port geändert
  • [ ] Root-Anmeldung deaktiviert (PermitRootLogin no)
  • [ ] Ed25519- oder RSA-4096-Schlüsselpaar generiert
  • [ ] Öffentlicher Schlüssel in authorized_keys auf dem Server bereitgestellt
  • [ ] Schlüsselbasierte Anmeldung erfolgreich getestet
  • [ ] Passwortauthentifizierung deaktiviert
  • [ ] Firewall so konfiguriert, dass nur der neue SSH-Port erlaubt ist
  • [ ] Fail2Ban installiert und konfiguriert
  • [ ] MaxAuthTries auf 3 oder weniger gesetzt
  • [ ] ClientAliveInterval konfiguriert, um inaktive Sitzungen zu beenden
  • [ ] sshd_config-Syntax mit sudo sshd -t validiert
  • [ ] Out-of-Band-Konsolenzugriff bestätigt (KVM/VNC)

Fazit

SSH korrekt zu installieren und zu konfigurieren ist eine der grundlegendsten Fähigkeiten in der Linux-Systemadministration. Eine Standard-SSH-Installation ist ein Risiko; eine gehärtete SSH-Konfiguration ist ein Vorteil. Durch Befolgen dieses Leitfadens haben Sie:

  1. Den OpenSSH-Server installiert und gestartet
  2. Den Standard-Port geändert und die Root-Anmeldung deaktiviert
  3. Kryptografisch starke schlüsselbasierte Authentifizierung implementiert
  4. Firewall-Regeln zur Zugriffsbeschränkung konfiguriert
  5. Fail2Ban zur Blockierung von Brute-Force-Versuchen bereitgestellt
  6. Eine vollständige Fehlerbehebungsmethodik etabliert

SSH wird bei korrekter Konfiguration zu einem leistungsstarken, zuverlässigen und sicheren Gateway für Remote-Management, Automatisierungspipelines und verschlüsselte Kommunikation zwischen Systemen. In Kombination mit robuster Hosting-Infrastruktur – wie AlexHosts Dedicated Servers mit DDoS-Mitigation auf Hardware-Ebene – haben Sie ein Fundament, das wirklich schwer zu kompromittieren ist.

Überprüfen Sie Ihre SSH-Konfiguration regelmäßig. Rotieren Sie Ihre Schlüssel jährlich. Überwachen Sie Ihre Protokolle. Sicherheit ist keine einmalige Aufgabe – sie ist eine fortlaufende Praxis.

15%

15% auf alle Hosting-Dienste sparen

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

Benutze den Code:

Skills
Anfangen