Verbindung und Konfiguration von SSH auf einem VPS: Der vollständige Sicherheitsleitfaden
Secure Shell (SSH) ist der Grundstein 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-Gehen 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 Ihnen ein ordnungsgemäß gehärtetes SSH-Setup einen schnellen, widerstandsfähigen und wirklich sicheren Verwaltungskanal.
Falls Sie noch keine Hosting-Umgebung gewählt haben, sollten Sie VPS Hosting-Pläne in Betracht ziehen, 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 Folgendes haben:
| Anforderung | Details |
|---|---|
| Ein laufender VPS | Jede Linux-Distribution (Ubuntu, Debian, CentOS, AlmaLinux, etc.) mit installiertem Betriebssystem |
| SSH-Client | Linux/macOS: integrierter ssh Befehl. Windows: PuTTY, Windows Terminal oder WSL |
| Server-IP-Adresse | Wird in Ihrem Hosting-Kontrollpanel nach der Bereitstellung bereitgestellt |
| Anmeldedaten | Standardbenutzername (root oder ein sudo-aktivierter Benutzer) und anfängliches Passwort |
| Grundlegende Terminal-Vertrautheit | 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 für Optionen wie cPanel, Plesk und DirectAdmin an, die den Befehlszeilenzugriff ergänzen.
Verbindung zu Ihrem VPS über 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 jemals 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 (oder IP-Adresse) die IP-Adresse Ihres Servers ein.
- Bestätigen Sie, dass Port auf
22und Verbindungstyp aufSSHeingestellt ist. - Klicken Sie auf Öffnen.
- Akzeptieren Sie den Host-Schlüssel-Fingerabdruck, wenn Sie dazu aufgefordert werden.
- Geben Sie Ihren Benutzernamen und Ihr Passwort ein.
> Windows 10/11 Alternative: 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
Alles 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 jeden Härtungsschritt unten durch. Nach allen Änderungen starten Sie den Dienst einmal neu – 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 überwiegende Mehrheit des automatisierten Lärms 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 Dienst verwendet wird):
Port 2222Entfernen Sie das # um die Zeile zu kommentieren. Speichern Sie mit STRG+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-Anmeldung
Das Zulassen direkter Root-Anmeldung über SSH ist ein erhebliches Sicherheitsrisiko. Melden Sie sich stattdessen als normaler Benutzer an und eskalieren Sie Berechtigungen mit sudo bei Bedarf.
In sshd_config finden Sie:
PermitRootLogin yesÄndern Sie es zu:
PermitRootLogin noBevor Sie die Root-Anmeldung deaktivieren, stellen Sie sicher, dass Sie einen Nicht-Root-Benutzer mit sudo-Rechten haben:
# Create a new user
adduser adminuser
# Grant sudo privileges
usermod -aG sudo adminuserTesten Sie, dass dieser Benutzer sich anmelden kann und sudo-Befehle ausführen kann, *bevor* Sie die Root-Anmeldung 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 passwortbasierte Anmeldung vollständig, um das Brute-Force-Risiko zu eliminieren:
PasswordAuthentication noStellen Sie auch sicher, dass diese verwandten 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-Baseline:
# 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 noEinrichtung der SSH-Schlüsselauthentifizierung
SSH-Schlüsselauthentifizierung ersetzt Passwörter durch ein kryptografisches Schlüsselpaar: einen privaten Schlüssel, der auf Ihrem lokalen Computer bleibt, und einen öffentlichen Schlüssel, der auf dem Server lebt. Selbst wenn ein Angreifer Ihren Benutzernamen kennt, kann er sich ohne Ihren privaten Schlüssel nicht authentifizieren.
Schritt 1: Generieren Sie ein SSH-Schlüsselpaar (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 benötigt, verwenden Sie stattdessen ssh-keygen -t rsa -b 4096.
Sie werden aufgefordert, einen Speicherort zu wählen (Standard ~/.ssh/id_ed25519 ist in Ordnung) und eine Passphrase zu setzen. Setzen Sie immer eine Passphrase – sie verschlüsselt Ihren privaten Schlüssel, sodass physischer Zugriff auf Ihren Computer nicht automatisch Ihre Server 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: Kopieren Sie den öffentlichen Schlüssel auf Ihren VPS
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 mit Passwortauthentifizierung.
- Erstellt
~/.ssh/authorized_keysauf dem Server, falls es nicht existiert. - 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: Überprüfen Sie schlüsselbasierte Anmeldung, bevor Sie Passwörter deaktivieren
Deaktivieren Sie die Passwortauthentifizierung nicht, bis Sie bestätigt haben, dass die schlüsselbasierte Anmeldung funktioniert. Öffnen Sie ein neues Terminal-Fenster 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 gesetzt), fahren Sie fort, um PasswordAuthentication in sshd_config zu deaktivieren.
Neustart und Überprüfung des SSH-Dienstes
Nach dem Speichern aller Änderungen an sshd_config validieren Sie die Konfigurationssyntax vor dem Neustart:
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 schiefgeht, bleibt Ihre vorhandene Sitzung aktiv und Sie können die Änderungen rückgängig machen.
Testen Ihrer sicheren Konfiguration
Test 1: Verbinden Sie sich auf dem neuen Port mit Ihrem Schlüssel
Von Ihrem lokalen Computer:
ssh username@your_server_ip -p 2222Erwartetes Ergebnis: Sie sind angemeldet und verwenden Ihren SSH-Schlüssel (aufgefordert für Ihre Schlüssel-Passphrase, falls gesetzt, aber nicht Ihr Server-Passwort).
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 nach einem Passwort gefragt.
Zusätzliche Härtung: Fail2Ban
Fail2Ban überwacht Protokolldateien und sperrt automatisch IP-Adressen, die Anzeichen bösartiger Aktivität zeigen – wie wiederholte fehlgeschlagene SSH-Anmeldeversuche. Es ist eine wesentliche Ergänzung zu den oben beschriebenen SSH-Härtungsschritten.
Installieren Sie Fail2Ban
Ubuntu/Debian:
sudo apt update && sudo apt install fail2ban -yCentOS/AlmaLinux/RHEL:
###PPT_
on All Hosting Services
