Sparen Sie 15% bei allen Hosting-Diensten

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

Benutze den Code: Skills Anfangen
Abschnitte
Linux Sicherheit Virtuelle Server

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:

AnforderungDetails
Ein laufender VPSJede Linux-Distribution (Ubuntu, Debian, CentOS, AlmaLinux, etc.) mit installiertem OS
SSH-ClientLinux/macOS: integrierter ssh Befehl. Windows: PuTTY, Windows Terminal oder WSL
Server-IP-AdresseWird in Ihrem Hosting-Kontrollpanel nach der Bereitstellung angezeigt
AnmeldedatenStandardbenutzername (root oder ein Benutzer mit sudo-Berechtigung) und anfängliches Passwort
Grundlegende Terminal-KenntnisseFä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_ip

Ersetzen 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.45

Eingabeaufforderung 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

  1. Laden Sie PuTTY von putty.org herunter und öffnen Sie es.
  2. Geben Sie im Feld Host Name (or IP address) die IP-Adresse Ihres Servers ein.
  3. Bestätigen Sie, dass Port auf 22 und Connection type auf SSH eingestellt ist.
  4. Klicken Sie auf Open.
  5. Akzeptieren Sie den Host-Schlüssel-Fingerabdruck, wenn Sie dazu aufgefordert werden.
  6. 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_config

Arbeiten 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 2222

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

Aktualisieren Sie Ihre Firewall (firewalld-Beispiel):

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

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

Bevor 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 adminuser

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

Stellen Sie auch sicher, dass diese zugehörigen Direktiven gesetzt sind:

ChallengeResponseAuthentication no
UsePAM no

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

SSH-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.com

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

Dieser Befehl:

  1. Verbindet sich mit Ihrem Server mithilfe von Passwortauthentifizierung.
  2. Erstellt ~/.ssh/authorized_keys auf dem Server, falls es nicht vorhanden ist.
  3. Fügt Ihren öffentlichen Schlüssel an diese Datei an.
  4. 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_keys

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

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

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

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

Erwartetes 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 2222

Erwartetes Ergebnis:

Permission denied (publickey).

oder

root@your_server_ip: Permission denied

Test 3: Bestätigen Sie, dass Passwortauthentifizierung deaktiviert ist

ssh username@your_server_ip -p 2222 -o PubkeyAuthentication=no

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

CentOS/AlmaLinux/RHEL:

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

Fail2Ban für SSH konfigurieren

Erstellen Sie eine lokale Überschreibungsdatei (bearbeiten Sie niemals die Standard-jail.conf direkt):

sudo nano /etc/fail2ban/jail.local

Fügen Sie Folgendes hinzu:

[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5

[sshd]
enabled  = true
port     = 2222
logpath  = %(sshd_log)s
backend  = %(sshd_backend)s

Passen 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 sshd

Sicherung 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_config vor Ä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 2222 wenn 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ßnahmeVorteil
Benutzerdefinierter SSH-PortEliminiert automatisierte Port-22-Scans
Deaktivierter Root-LoginEntfernt das am häufigsten angesteuerte Konto vom Remote-Zugriff
SSH-Schlüssel-AuthentifizierungErsetzt erratbare Passwörter durch kryptographischen Nachweis
Deaktivierte Passwort-AuthentifizierungSchließt den Brute-Force-Angriffsvektor vollständig
Fail2BanBlockiert automatisch hartnäckige Angreifer
MaxAuthTries & TimeoutsBegrenzt 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.