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 -yCentOS / RHEL / AlmaLinux / Rocky Linux
sudo yum install openssh-server -yFedora
sudo dnf install openssh-server -yArch Linux
sudo pacman -S opensshNach 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 sshSSH für den Autostart beim Booten aktivieren
sudo systemctl enable sshÜberprüfen, ob der Dienst läuft
sudo systemctl status sshEine 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_configDiese 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 -tWenn keine Fehler zurückgegeben werden, wenden Sie die Änderungen an:
sudo systemctl restart sshSchritt 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 22Kommentieren 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 2222Speichern 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 noBenutzer 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.0Schritt 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:
- Einen Dateipfad zu wählen (drücken Sie Enter, um den Standard
~/.ssh/id_ed25519zu akzeptieren) - 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_ipErsetzen 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_ipWenn 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 verbosefirewalld 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 --reloadSSH-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 tcpDies 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.localBearbeiten 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 = 600Fail2Ban starten und aktivieren:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban7.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 3Mit dieser Konfiguration können Sie sich einfach durch Eingabe von Folgendem verbinden:
ssh myserver7.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-authenticatorKonfigurieren 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_ipDas 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
| Problem | Wahrscheinliche Ursache | Lösung |
|---|---|---|
Connection refused | SSH läuft nicht oder falscher Port | systemctl 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 failed | Server-Fingerabdruck hat sich geändert | Alten Eintrag aus ~/.ssh/known_hosts entfernen |
Connection timed out | Firewall blockiert den Port | UFW/firewalld-Regeln und Cloud-Sicherheitsgruppen prüfen |
| Ausgesperrt nach Konfigurationsänderung | Fehlkonfiguration in sshd_config | Konsolen-/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 -tVollstä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 VERBOSEWarum 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_keysauf 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
- [ ]
MaxAuthTriesauf 3 oder weniger gesetzt - [ ]
ClientAliveIntervalkonfiguriert, um inaktive Sitzungen zu beenden - [ ]
sshd_config-Syntax mitsudo sshd -tvalidiert - [ ] 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:
- Den OpenSSH-Server installiert und gestartet
- Den Standard-Port geändert und die Root-Anmeldung deaktiviert
- Kryptografisch starke schlüsselbasierte Authentifizierung implementiert
- Firewall-Regeln zur Zugriffsbeschränkung konfiguriert
- Fail2Ban zur Blockierung von Brute-Force-Versuchen bereitgestellt
- 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.
