Verbindung und Konfiguration von SSH auf einem VPS: Der vollständige Sicherheitsleitfaden
Secure shell (SSH) access ist das Fundament der professionellen Serververwaltung. Egal ob Sie eine WordPress-Website bereitstellen, Code über Git pushen oder benutzerdefinierte Anwendungen verwalten – SSH bietet Ihnen einen verschlüsselten, authentifizierten Tunnel direkt auf Ihren Server. Dieser umfassende Leitfaden führt Sie durch jeden Schritt – von Ihrer ersten Verbindung bis zur Härtung Ihres Setups gegen reale Angriffe – damit Sie Ihre VPS Hosting-Umgebung mit Vertrauen verwalten können.
Warum SSH-Sicherheit wichtig ist
Jeder öffentlich zugängliche Server ist einem konstanten Bombardement automatisierter Brute-Force-Versuche ausgesetzt. Innerhalb von Minuten nach dem Live-Schalten eines VPS beginnen Bots, Port 22 zu scannen und häufige Benutzername/Passwort-Kombinationen zu versuchen. Eine schlecht gesicherte SSH-Konfiguration ist einer der häufigsten Einstiegspunkte für Angreifer.
Die gute Nachricht: Ein paar bewusste Konfigurationsänderungen reduzieren Ihre Angriffsfläche dramatisch. In Kombination mit zuverlässiger Infrastruktur – wie NVMe-gestütztem Speicher und integriertem DDoS-Schutz – bietet eine ordnungsgemäß gehärtete SSH-Einrichtung einen schnellen, widerstandsfähigen und wirklich sicheren Verwaltungskanal.
Wenn Sie sich noch nicht für eine Hosting-Umgebung entschieden haben, sollten Sie VPS-Hosting-Pläne erkunden, die vollständigen Root-Zugriff, dedizierte Ressourcen und die Flexibilität zur Implementierung aller in diesem Leitfaden behandelten Sicherheitsmaßnahmen bieten.
Voraussetzungen
Bevor Sie beginnen, bestätigen Sie, dass Sie folgende Voraussetzungen erfüllt haben:
| Anforderung | Details |
|---|---|
| Ein laufender VPS | Jede Linux-Distribution (Ubuntu, Debian, CentOS, AlmaLinux, etc.) mit installiertem OS |
| SSH-Client | Linux/macOS: integrierter ssh Befehl. Windows: PuTTY, Windows Terminal oder WSL |
| Server-IP-Adresse | Wird in Ihrem Hosting-Kontrollpanel nach der Bereitstellung angezeigt |
| Anmeldedaten | Standardbenutzername (root oder ein Benutzer mit sudo-Berechtigung) und anfängliches Passwort |
| Grundlegende Terminal-Kenntnisse | Fähigkeit, Befehle auszuführen und Dateien mit nano oder vim zu bearbeiten |
> Tipp: Wenn Sie mehrere Server verwalten oder eine grafische Benutzeroberfläche neben SSH benötigen, schauen Sie sich VPS-Kontrollpanels an, um Optionen wie cPanel, Plesk und DirectAdmin zu finden, die den Befehlszeilenzugriff ergänzen.
Verbindung zu Ihrem VPS via SSH
Unter Linux oder macOS
Öffnen Sie Ihr Terminal und führen Sie aus:
ssh username@your_server_ipErsetzen Sie username durch Ihren tatsächlichen Benutzernamen (normalerweise root für einen neuen VPS) und your_server_ip durch die öffentliche IP-Adresse Ihres Servers.
Beispiel:
ssh root@203.0.113.45Eingabeaufforderung bei der ersten Verbindung:
The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?Geben Sie yes ein und drücken Sie Enter. Dies fügt den Host-Schlüssel des Servers zu Ihrer ~/.ssh/known_hosts-Datei hinzu. Bei nachfolgenden Verbindungen überprüft SSH diesen Fingerabdruck automatisch – wenn er sich unerwartet ändert, behandeln Sie dies als potenziellen Sicherheitsvorfall.
Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden.
Unter Windows mit PuTTY
- Laden Sie PuTTY von putty.org herunter und öffnen Sie es.
- Geben Sie im Feld Host Name (or IP address) die IP-Adresse Ihres Servers ein.
- Bestätigen Sie, dass Port auf
22und Connection type aufSSHeingestellt ist. - Klicken Sie auf Open.
- Akzeptieren Sie den Host-Schlüssel-Fingerabdruck, wenn Sie dazu aufgefordert werden.
- Geben Sie Ihren Benutzernamen und Ihr Passwort ein.
> Alternative für Windows 10/11: Windows Terminal und PowerShell enthalten beide einen nativen OpenSSH-Client. Sie können die gleiche ssh username@your_server_ip-Syntax wie unter Linux/macOS verwenden – keine Drittanbieter-Tools erforderlich.
SSH-Härtung: Schritt-für-Schritt-Konfiguration
Das gesamte SSH-Verhalten wird durch eine einzelne Konfigurationsdatei gesteuert:
/etc/ssh/sshd_configÖffnen Sie sie mit erhöhten Rechten:
sudo nano /etc/ssh/sshd_configArbeiten Sie die einzelnen Härtungsschritte unten durch. Nach allen Änderungen starten Sie den Service einmal neu – das wird im nächsten Abschnitt behandelt.
Schritt 1: Ändern Sie den Standard-SSH-Port
Port 22 ist der erste Port, den Bots scannen. Das Verschieben von SSH auf einen nicht standardmäßigen Port eliminiert die große Mehrheit des automatisierten Rauschens in Ihren Protokollen.
Suchen Sie diese Zeile:
#Port 22Ändern Sie sie auf einen Port Ihrer Wahl (verwenden Sie eine Nummer zwischen 1024 und 65535, die nicht von einem anderen Service verwendet wird):
Port 2222Entfernen Sie #, um die Zeile zu kommentieren. Speichern Sie mit CTRL+X, dann Y, dann Enter.
> Wichtig: Bevor Sie SSH neu starten, stellen Sie sicher, dass Ihre Firewall den neuen Port zulässt. Siehe die Firewall-Notiz unten.
Aktualisieren Sie Ihre Firewall (UFW-Beispiel):
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
sudo ufw reloadAktualisieren Sie Ihre Firewall (firewalld-Beispiel):
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reloadSchritt 2: Deaktivieren Sie Root-Login
Das Zulassen von direktem Root-Login über SSH ist ein erhebliches Sicherheitsrisiko. Melden Sie sich stattdessen als normaler Benutzer an und erhöhen Sie die Berechtigungen mit sudo bei Bedarf.
In sshd_config suchen Sie:
PermitRootLogin yesÄndern Sie es zu:
PermitRootLogin noBevor Sie Root-Login deaktivieren, stellen Sie sicher, dass Sie einen normalen Benutzer mit sudo-Berechtigungen haben:
# Create a new user
adduser adminuser
# Grant sudo privileges
usermod -aG sudo adminuserTesten Sie, dass sich dieser Benutzer anmelden kann und sudo-Befehle ausführen kann, *bevor* Sie Root-Login deaktivieren und SSH neu starten.
Schritt 3: Deaktivieren Sie Passwortauthentifizierung (nach Einrichtung von Schlüsseln)
Sobald SSH-Schlüsselauthentifizierung konfiguriert ist (nächster Abschnitt), deaktivieren Sie passwortbasiertes Login vollständig, um Brute-Force-Risiken zu eliminieren:
PasswordAuthentication noStellen Sie auch sicher, dass diese zugehörigen Direktiven gesetzt sind:
ChallengeResponseAuthentication no
UsePAM noSchritt 4: Zusätzliche empfohlene Direktiven
Fügen Sie diese Einstellungen in sshd_config hinzu oder überprüfen Sie sie für eine umfassende Härtungs-Basiskonfiguration:
# Limit authentication attempts per connection
MaxAuthTries 3
# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2
# Disable empty passwords
PermitEmptyPasswords no
# Restrict SSH to specific users (replace 'adminuser' with your username)
AllowUsers adminuser
# Use only strong protocol version
Protocol 2
# Disable X11 forwarding if not needed
X11Forwarding noSSH-Schlüsselauthentifizierung einrichten
SSH-Schlüsselauthentifizierung ersetzt Passwörter durch ein kryptographisches Schlüsselpaar: einen privaten Schlüssel, der auf Ihrem lokalen Computer verbleibt, und einen öffentlichen Schlüssel, der sich auf dem Server befindet. Selbst wenn ein Angreifer Ihren Benutzernamen kennt, kann er sich ohne Ihren privaten Schlüssel nicht authentifizieren.
Schritt 1: SSH-Schlüsselpaar generieren (auf Ihrem lokalen Computer)
ssh-keygen -t ed25519 -C "your_email@example.com"> Warum Ed25519? Es ist schneller und sicherer als der ältere RSA-Algorithmus. Wenn Ihr System RSA aus Kompatibilitätsgründen erfordert, verwenden Sie stattdessen ssh-keygen -t rsa -b 4096.
Sie werden aufgefordert, einen Speicherort auszuwählen (Standard ~/.ssh/id_ed25519 ist in Ordnung) und eine Passphrase festzulegen. Legen Sie immer eine Passphrase fest – sie verschlüsselt Ihren privaten Schlüssel, sodass physischer Zugriff auf Ihren Computer Ihre Server nicht automatisch kompromittiert.
Ausgabe:
Your identification has been saved in /home/you/.ssh/id_ed25519
Your public key has been saved in /home/you/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.comSchritt 2: Öffentlichen Schlüssel auf Ihren VPS kopieren
Die einfachste Methode verwendet ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ipDieser Befehl:
- Verbindet sich mit Ihrem Server mithilfe von Passwortauthentifizierung.
- Erstellt
~/.ssh/authorized_keysauf dem Server, falls es nicht vorhanden ist. - Fügt Ihren öffentlichen Schlüssel an diese Datei an.
- Setzt automatisch die richtigen Berechtigungen.
Manuelle Methode (falls ssh-copy-id nicht verfügbar ist):
# On your local machine, display your public key
cat ~/.ssh/id_ed25519.pub
# On your server, add it manually
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "paste-your-public-key-here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysSchritt 3: Schlüsselbasierte Anmeldung überprüfen, bevor Passwörter deaktiviert werden
Deaktivieren Sie die Passwortauthentifizierung nicht, bis Sie bestätigt haben, dass die schlüsselbasierte Anmeldung funktioniert. Öffnen Sie ein neues Terminalfenster und testen Sie:
ssh -i ~/.ssh/id_ed25519 username@your_server_ip -p 2222Wenn Sie sich erfolgreich anmelden, ohne nach einem Passwort gefragt zu werden (nur Ihre Schlüssel-Passphrase, falls festgelegt), fahren Sie fort, um PasswordAuthentication in sshd_config zu deaktivieren.
SSH-Dienst neu starten und überprüfen
Nach dem Speichern aller Änderungen an sshd_config die Konfigurationssyntax überprüfen, bevor Sie neu starten:
sudo sshd -tWenn keine Fehler zurückgegeben werden, starten Sie den SSH-Daemon neu:
sudo systemctl restart sshdÜberprüfen Sie, dass der Dienst erfolgreich gestartet wurde:
sudo systemctl status sshdSie sollten Active: active (running) in der Ausgabe sehen.
> Kritischer Sicherheitstipp: Halten Sie Ihre aktuelle SSH-Sitzung offen, während Sie die neue Konfiguration in einem separaten Fenster testen. Falls etwas schief geht, bleibt Ihre bestehende Sitzung aktiv und Sie können die Änderungen rückgängig machen.
Testen Ihrer sicheren Konfiguration
Test 1: Verbindung zum neuen Port mit Ihrem Schlüssel
Von Ihrem lokalen Computer:
ssh username@your_server_ip -p 2222Erwartetes Ergebnis: Sie sind mit Ihrem SSH-Schlüssel angemeldet (Sie werden nach Ihrer Schlüsselpassphrase gefragt, falls Sie eine festgelegt haben, aber nicht nach Ihrem Serverpasswort).
Test 2: Bestätigen Sie, dass Root-Anmeldung blockiert ist
ssh root@your_server_ip -p 2222Erwartetes Ergebnis:
Permission denied (publickey).oder
root@your_server_ip: Permission deniedTest 3: Bestätigen Sie, dass Passwortauthentifizierung deaktiviert ist
ssh username@your_server_ip -p 2222 -o PubkeyAuthentication=noErwartetes Ergebnis:
Permission denied (publickey).Wenn die Passwortauthentifizierung noch aktiviert wäre, würden Sie stattdessen zur Eingabe eines Passworts aufgefordert.
Zusätzliche Härtung: Fail2Ban
Fail2Ban überwacht Protokolldateien und sperrt automatisch IP-Adressen, die Anzeichen böswilliger Aktivität aufweisen — wie wiederholte fehlgeschlagene SSH-Anmeldeversuche. Es ist eine wesentliche Ergänzung zu den oben beschriebenen SSH-Härtungsschritten.
Fail2Ban installieren
Ubuntu/Debian:
sudo apt update && sudo apt install fail2ban -yCentOS/AlmaLinux/RHEL:
sudo dnf install epel-release -y
sudo dnf install fail2ban -yFail2Ban für SSH konfigurieren
Erstellen Sie eine lokale Überschreibungsdatei (bearbeiten Sie niemals die Standard-jail.conf direkt):
sudo nano /etc/fail2ban/jail.localFügen Sie Folgendes hinzu:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = 2222
logpath = %(sshd_log)s
backend = %(sshd_backend)sPassen Sie port an Ihren benutzerdefinierten SSH-Port an. Speichern Sie, aktivieren Sie dann Fail2Ban und starten Sie es:
sudo systemctl enable fail2ban
sudo systemctl start fail2banÜberprüfen Sie aktive Sperren und den Jail-Status:
sudo fail2ban-client status sshdSicherung Ihrer SSH-Schlüssel und Konfiguration
Ein gesperrter Server ist ein ernstes Problem. Befolgen Sie diese Praktiken, um dies zu vermeiden:
- Sichern Sie Ihren privaten Schlüssel in einem verschlüsselten Passwort-Manager oder im Offline-Speicher.
- Speichern Sie eine Kopie von
sshd_configvor Änderungen:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - Nutzen Sie die Out-of-Band-Konsole Ihres Hosting-Anbieters (VNC/KVM-Zugriff über das Kontrollpanel) als Fallback, falls Sie den SSH-Zugriff verlieren.
- Dokumentieren Sie Ihren benutzerdefinierten Port — es ist leicht zu vergessen
2222wenn Sie zwischen Servern wechseln.
SSH mit der richtigen Hosting-Infrastruktur kombinieren
Eine sichere SSH-Konfiguration ist nur so stark wie die Infrastruktur darunter. Berücksichtigen Sie diese ergänzenden Dienste:
- Dedicated Servers — Für Workloads, die maximale Leistung und vollständige Hardware-Isolation erfordern, bieten Dedicated Servers vollständige Kontrolle über sowohl die physische als auch die Software-Ebene, einschließlich SSH-Konfiguration.
- SSL Certificates — Sichern Sie die Web-seitige Seite Ihrer Anwendungen mit vertrauenswürdigen SSL/TLS-Zertifikaten, die SSH-Sicherheit für das Backend Ihres Servers ergänzen.
- Domain Registration — Registrieren und verwalten Sie Ihre Domain zusammen mit Ihrem Hosting, um die Konfiguration von DNS-basierten Zugriffskontrolle und Server-Hostnamen zu vereinfachen.
Fazit
Eine ordnungsgemäß konfigurierte SSH-Einrichtung ist eine der wirkungsvollsten Sicherheitsverbesserungen, die Sie an einem Linux-Server vornehmen können. Zusammenfassend haben Sie folgende Maßnahmen implementiert:
| Sicherheitsmaßnahme | Vorteil |
|---|---|
| Benutzerdefinierter SSH-Port | Eliminiert automatisierte Port-22-Scans |
| Deaktivierter Root-Login | Entfernt das am häufigsten angesteuerte Konto vom Remote-Zugriff |
| SSH-Schlüssel-Authentifizierung | Ersetzt erratbare Passwörter durch kryptographischen Nachweis |
| Deaktivierte Passwort-Authentifizierung | Schließt den Brute-Force-Angriffsvektor vollständig |
| Fail2Ban | Blockiert automatisch hartnäckige Angreifer |
MaxAuthTries & Timeouts | Begrenzt die Exposition gegenüber langsamen oder verteilten Angriffen |
Diese Maßnahmen arbeiten zusammen, um eine mehrschichtige Verteidigung zu schaffen — jede einzelne ist sinnvoll, und in Kombination erheblich stärker.
Egal, ob Sie eine einzelne WordPress-Website betreiben oder eine Flotte von Anwendungsservern verwalten, eine gehärtete SSH-Konfiguration gibt Ihnen die Kontrolle. Kombinieren Sie sie mit zuverlässiger VPS Hosting-Infrastruktur, sichern Sie Ihre Schlüssel und Sie haben eine sichere, professionelle Serverumgebung, die lange hält.
bei allen Hosting-Diensten