SSH einfach erklärt: So funktioniert der sichere Server-Zugriff
- Technische Anleitungen
- Jason Carter
SSH ist das Standardprotokoll für verschlüsselte Verbindungen zu entfernten Servern. Wer einen vServer oder Root-Server betreibt, kommt um SSH nicht herum: Es ermöglicht dir, deinen Server sicher zu verwalten, Dateien zu übertragen und Konfigurationen anzupassen. Ohne SSH wären viele administrative Aufgaben entweder unsicher oder gar nicht möglich.
Dieser Artikel erklärt, wie SSH funktioniert, warum es sicherer ist als Alternativen wie Telnet oder FTP und wie du es praktisch für dein Webhosting nutzt. Du erfährst, wie du deine erste SSH-Verbindung aufbaust, Authentifizierung einrichtest und deinen Server absicherst.
Am Ende verstehst du die technischen Grundlagen und kannst SSH souverän für die Verwaltung deiner Server einsetzen.
Was ist SSH und warum brauchst du es für dein Webhosting
SSH steht für Secure Shell und ist ein kryptographisches Netzwerkprotokoll. Es schafft eine verschlüsselte Verbindung zwischen deinem lokalen Computer und einem entfernten Server. Alle Daten, die über diese Verbindung laufen, sind geschützt: Befehle, Passwörter, Dateiinhalte und Systemausgaben.
Das Protokoll nutzt TCP-Port 22 als Standardport und arbeitet nach dem Client-Server-Modell. Dein lokaler SSH-Client baut die Verbindung zum SSH-Server auf dem entfernten System auf. Seit 2006 ist SSH-2 der offizielle IETF-Standard und hat die unsicheren Vorgänger wie Telnet, rlogin, rsh und klassisches FTP abgelöst.
SSH wird in praktisch allen Rechenzentren eingesetzt und typischerweise mit jedem Unix-, Linux- und Mac-Server standardmäßig ausgeliefert. Für Webhosting ist es unverzichtbar: Ohne SSH-Zugriff kannst du Software-Updates nicht durchführen, Konfigurationsdateien nicht bearbeiten und keine Deployment-Prozesse automatisieren. Bei vServern, Root-Servern und Cloud-Servern gehört SSH zur Grundausstattung. Bei Shared Hosting ist der Zugriff oft eingeschränkt oder optional, da dort mehrere Nutzer auf demselben System arbeiten.
SSH ist wie ein verschlüsselter Tunnel zwischen dir und deinem Server. Was du eingibst und was der Server antwortet, bleibt für Außenstehende unsichtbar. Diese Sicherheit macht SSH zum Standard für alle administrativen Arbeiten im Webhosting.
Der entscheidende Unterschied zu unsicheren Alternativen
Viele Einsteiger nutzen noch FTP für Dateiübertragungen oder kennen die Risiken von Telnet nicht. Diese Protokolle übertragen Daten unverschlüsselt und setzen deine Server damit Angriffen aus. SSH bietet hier einen fundamentalen Sicherheitsvorteil.
Warum SSH statt Telnet
Telnet überträgt alle Daten im Klartext. Jede Tastatureingabe, jedes Passwort und jede Serverantwort kann von einem Angreifer mitgelesen werden, der sich im Netzwerk befindet. Ein solcher Sniffing-Angriff ist mit einfachen Tools möglich und erfordert keine besonderen Kenntnisse.
SSH verschlüsselt hingegen die gesamte Verbindung. Ein Lauscher sieht nur zufällige Daten ohne erkennbaren Inhalt. Selbst wenn jemand den Netzwerkverkehr aufzeichnet, kann er weder Passwörter noch Befehle rekonstruieren. Dieser Schutz macht SSH zur einzig akzeptablen Wahl für Remote-Zugriff auf produktive Server.
SSH vs FTP für Dateiübertragungen
Klassisches FTP arbeitet ebenfalls unverschlüsselt und sendet Zugangsdaten im Klartext über Port 21. Für Webhosting ist das ein erhebliches Sicherheitsrisiko, besonders wenn du sensible Daten oder Kundendatenbanken überträgst.
SFTP (SSH File Transfer Protocol) und SCP (Secure Copy Protocol) sind die sicheren Alternativen. Beide nutzen die SSH-Verschlüsselung und laufen über Port 22. SFTP bietet dabei eine interaktive Oberfläche mit FTP-ähnlichen Befehlen, während SCP für schnelle Einzelübertragungen optimiert ist. Beide Protokolle schützen deine Dateien und Zugangsdaten vollständig.
Abgrenzung zu RDP und HTTPS
RDP (Remote Desktop Protocol) ist für grafische Windows-Oberflächen konzipiert und nutzt Port 3389. Es dient dazu, einen entfernten Desktop zu steuern, nicht für textbasierte Terminal-Sitzungen. SSH hingegen ist für die Kommandozeile optimiert und benötigt deutlich weniger Ressourcen.
Der Unterschied zu HTTPS liegt in der Authentifizierung: Bei HTTPS authentifiziert sich meist nur der Server gegenüber dem Client. SSH nutzt bidirektionale Authentifizierung, bei der sich sowohl Client als auch Server gegenseitig verifizieren. HTTPS läuft über Port 443 und ist für Webbrowser-Kommunikation gedacht, während SSH für direkte Server-Administration entwickelt wurde.
So funktioniert SSH technisch
Ein grundlegendes Verständnis der SSH-Funktionsweise hilft dir, Sicherheitseinstellungen richtig zu konfigurieren und Verbindungsprobleme zu verstehen. Die technischen Mechanismen sind ausgereift und seit Jahrzehnten bewährt.
Client-Server-Modell
SSH besteht aus zwei Komponenten: dem SSH-Client auf deinem lokalen Rechner und dem SSH-Server auf dem entfernten System. Der Client initiiert die Verbindung zum Server über TCP-Port 22. OpenSSH ist die am weitesten verbreitete Implementierung und auf praktisch allen Linux-Systemen vorinstalliert.
Der Ablauf: Dein Client sendet eine Verbindungsanfrage an den Server. Der Server antwortet mit seinem öffentlichen Schlüssel. Nach erfolgreicher Authentifizierung wird eine verschlüsselte Sitzung aufgebaut, über die alle weiteren Befehle und Daten laufen.
Verschlüsselung und Schlüsselaustausch
SSH nutzt Public-Key-Kryptographie: Jeder Host besitzt ein Schlüsselpaar aus einem öffentlichen und einem privaten Schlüssel. Der öffentliche Schlüssel kann frei verteilt werden, während der private Schlüssel geheim bleiben muss. Diese asymmetrische Verschlüsselung ermöglicht sichere Kommunikation, ohne dass vorher ein gemeinsames Geheimnis ausgetauscht werden muss.
Für die eigentliche Sitzung wird ein symmetrischer Sitzungsschlüssel über das Diffie-Hellman-Verfahren ausgehandelt. Dieser Schlüssel ist nur für die aktuelle Verbindung gültig und wird nach Sitzungsende verworfen. Die Verschlüsselung erfolgt mit Algorithmen wie AES oder Blowfish. Zusätzlich sichern MACs (Message Authentication Codes) die Integrität der übertragenen Daten.
Ähnlich wie TLS für Webverbindungen sorgt SSH für Ende-zu-Ende-Verschlüsselung. Der Unterschied liegt in der gegenseitigen Authentifizierung und der Optimierung für Terminal-Sitzungen statt HTTP-Verkehr.
Die drei Protokollschichten
SSH-2 ist seit 2006 standardisiert und nutzt drei klar getrennte Protokollschichten. Diese Architektur sorgt für Sicherheit und Flexibilität:
- Transport Layer: Verschlüsselt die Verbindung und authentifiziert den Server. Diese Schicht baut die sichere Basis für alle weiteren Kommunikation auf.
- User Authentication Layer: Authentifiziert den Benutzer gegenüber dem Server. Hier kommen Passwörter, SSH-Schlüssel oder andere Verfahren zum Einsatz.
- Connection Layer: Ermöglicht Multiplexing mehrerer Kanäle über eine einzige SSH-Verbindung. So können gleichzeitig Terminal-Sitzungen, Dateiübertragungen und Portweiterleitungen laufen.
Diese Trennung macht SSH modular und erweiterbar. Neue Authentifizierungsmethoden oder Verschlüsselungsalgorithmen können hinzugefügt werden, ohne das gesamte Protokoll zu ändern.
SSH-Authentifizierung für deinen Server einrichten
Die richtige Authentifizierung ist der wichtigste Sicherheitsfaktor beim SSH-Zugriff. Zwei Methoden stehen zur Verfügung: Passwort-Authentifizierung und Public-Key-Authentifizierung. Wir empfehlen für produktive Webserver ausschließlich die Schlüssel-basierte Variante.
Passwort-Authentifizierung
Bei der Passwort-Authentifizierung gibst du Benutzername und Passwort ein, um dich anzumelden. Diese Methode ist standardmäßig aktiviert und funktioniert sofort nach der Installation des SSH-Servers. Sie ist die einfachste Variante, jedoch auch die unsicherste.
Passwort-basierte Anmeldungen sind anfällig für Brute-Force-Angriffe. Automatisierte Bots scannen das Internet nach offenen SSH-Ports und probieren systematisch gängige Benutzernamen und Passwörter durch. Für produktive Server solltest du diese Methode deaktivieren, sobald die Schlüssel-Authentifizierung funktioniert.
Public-Key-Authentifizierung einrichten
Die Schlüssel-basierte Authentifizierung ist deutlich sicherer und nach der Einrichtung auch komfortabler. Du erstellst ein Schlüsselpaar auf deinem lokalen Rechner und kopierst den öffentlichen Schlüssel auf den Server. Der private Schlüssel bleibt auf deinem Computer und wird niemals übertragen.
So richtest du SSH-Schlüssel ein:
- Erstelle ein Schlüsselpaar mit dem Befehl
ssh-keygen -t rsa -b 4096. Das erzeugt einen RSA-Schlüssel mit 4096 Bit Länge. Alternativ kannst dussh-keygen -t ed25519für einen modernen Ed25519-Schlüssel nutzen. - Kopiere den öffentlichen Schlüssel auf den Server:
ssh-copy-id benutzername@hostname. Dieser Befehl fügt deinen Schlüssel automatisch zur Datei~/.ssh/authorized_keysauf dem Server hinzu. - Setze die korrekten Rechte: Das Verzeichnis
.sshbenötigt die Rechte 700, die Dateiauthorized_keysdie Rechte 600. Falsche Rechte führen dazu, dass SSH die Schlüssel ignoriert. - Teste die Verbindung mit
ssh benutzername@hostname. Wenn alles korrekt eingerichtet ist, wirst du ohne Passwort angemeldet.
Viele Hosting-Provider bieten Web-Interfaces zur Schlüsselverwaltung an. In Plesk oder cPanel kannst du SSH-Schlüssel direkt über das Control Panel hochladen und verwalten. Das erleichtert die Einrichtung, besonders wenn du mehrere Server verwaltest.
Host-Key-Fingerprints überprüfen
Beim ersten Verbindungsaufbau zeigt SSH den Fingerprint des Server-Host-Keys an. Diese Prüfung schützt dich vor Man-in-the-Middle-Angriffen, bei denen sich ein Angreifer als dein Server ausgibt.
Du solltest diesen Fingerprint mit einem vertrauenswürdigen Wert vergleichen. Viele Provider zeigen den Fingerprint im Dashboard oder in der Willkommens-E-Mail an. Im Zweifelsfall kannst du beim Support nachfragen. Erst nach der Bestätigung wird der Host-Key in der Datei ~/.ssh/known_hosts gespeichert.
Wenn SSH die Warnung „REMOTE HOST IDENTIFICATION HAS CHANGED“ anzeigt, hat sich der Host-Key geändert. Das kann legitime Gründe haben, etwa eine Neuinstallation des Servers. Es kann jedoch auch ein Sicherheitsvorfall sein. Kläre die Ursache, bevor du den neuen Schlüssel akzeptierst.
Deine erste SSH-Verbindung aufbauen
Der praktische Einstieg in SSH ist einfacher als viele denken. Die Grundbefehle sind auf allen Betriebssystemen ähnlich, nur die verwendeten Tools unterscheiden sich leicht.
SSH-Client unter Linux und macOS
Auf Linux-Systemen und macOS ist OpenSSH standardmäßig vorinstalliert. Du öffnest einfach ein Terminal und gibst den Verbindungsbefehl ein:
ssh benutzername@hostname-oder-ip
Ein konkretes Beispiel: ssh root@beispiel-server.de oder ssh admin@192.168.1.100. Beim ersten Verbindungsaufbau wirst du nach der Bestätigung des Host-Key-Fingerprints gefragt. Danach erfolgt die Authentifizierung über Passwort oder SSH-Schlüssel.
Nach erfolgreicher Anmeldung siehst du die Kommandozeile des entfernten Servers. Alle Befehle, die du jetzt eingibst, werden auf dem Server ausgeführt. Mit exit beendest du die Sitzung und kehrst zu deinem lokalen System zurück.
SSH unter Windows nutzen
Unter Windows hast du zwei Optionen: Den integrierten OpenSSH-Client oder das grafische Tool PuTTY.
OpenSSH ist ab Windows 10 Version 1809 integriert. Du öffnest PowerShell oder die Eingabeaufforderung und nutzt dieselben Befehle wie unter Linux: ssh benutzername@hostname. Die Bedienung ist identisch, sodass du keine neuen Befehle lernen musst.
PuTTY ist eine kostenlose Open-Source-Alternative mit grafischer Oberfläche. Du gibst Hostname und Port in die entsprechenden Felder ein und klickst auf „Open“. PuTTY öffnet dann ein Terminal-Fenster mit der SSH-Verbindung. Für Einsteiger ist PuTTY oft intuitiver als die Kommandozeile.
Verbindungsparameter verstehen
SSH bietet zusätzliche Parameter für spezielle Situationen:
- Port ändern:
ssh -p 2222 user@hostverbindet sich mit Port 2222 statt dem Standard-Port 22. Viele Admins ändern den Port aus Sicherheitsgründen. - Bestimmten Schlüssel verwenden:
ssh -i ~/.ssh/mein_schluessel user@hostnutzt einen spezifischen privaten Schlüssel. Das ist nützlich, wenn du mehrere Schlüssel für verschiedene Server hast. - Verbose-Modus:
ssh -v user@hostzeigt detaillierte Informationen über den Verbindungsaufbau. Die Parameter-vvund-vvverhöhen die Detailtiefe weiter. Das hilft bei der Fehlersuche.
Diese Parameter lassen sich kombinieren: ssh -v -p 2222 -i ~/.ssh/schluessel user@host nutzt alle drei Optionen gleichzeitig.
Dateien sicher mit SSH übertragen
Dateiübertragung gehört zu den häufigsten Aufgaben im Webhosting-Alltag. SSH bietet mit SCP und SFTP zwei sichere Werkzeuge, die das unsichere FTP vollständig ersetzen können.
SCP für schnelle Dateiübertragungen
SCP (Secure Copy Protocol) ist das einfachste Tool für einzelne Dateien oder Verzeichnisse. Es nutzt die SSH-Verschlüsselung und Port 22, genau wie SSH selbst.
Eine Datei hochladen: scp datei.txt user@host:/pfad/ kopiert die lokale Datei auf den Server. Eine Datei herunterladen: scp user@host:/pfad/datei.txt . kopiert die Datei vom Server in dein aktuelles Verzeichnis. Der Punkt am Ende steht für das aktuelle Verzeichnis.
Für ganze Verzeichnisse nutzt du den Parameter -r (rekursiv): scp -r verzeichnis/ user@host:/pfad/ kopiert das Verzeichnis mit allen Unterordnern und Dateien. Wenn dein SSH-Server einen anderen Port nutzt, gibst du diesen mit -P an: scp -P 2222 datei.txt user@host:/pfad/.
SFTP für interaktive Dateiübertragung
SFTP (SSH File Transfer Protocol) bietet eine interaktive Oberfläche ähnlich wie klassisches FTP jedoch mit vollständiger SSH-Sicherheit. Du startest eine SFTP-Sitzung mit sftp user@host und erhältst eine interaktive Eingabeaufforderung.
Die wichtigsten SFTP-Befehle:
| Befehl | Funktion |
|---|---|
| ls | Dateien auf dem Server auflisten |
| cd verzeichnis | Verzeichnis auf dem Server wechseln |
| get datei | Datei vom Server herunterladen |
| put datei | Datei auf den Server hochladen |
| mkdir verzeichnis | Verzeichnis auf dem Server erstellen |
| rm datei | Datei auf dem Server löschen |
SFTP ist besonders praktisch, wenn du mehrere Dateien übertragen oder die Verzeichnisstruktur erkunden möchtest. Mit exit beendest du die SFTP-Sitzung.
Grafische SFTP-Clients für Einsteiger
Wer die Kommandozeile scheut, kann grafische Tools nutzen. FileZilla, WinSCP (Windows) und Cyberduck (macOS) unterstützen alle SFTP. Diese Programme bieten eine vertraute Zwei-Fenster-Ansicht wie klassische FTP-Software.
Die Einrichtung: Wähle SFTP als Protokoll, gib Hostname, Port 22 und deine Zugangsdaten ein. Die meisten Clients unterstützen auch SSH-Schlüssel. FileZilla und WinSCP sind kostenlos und decken alle gängigen Anwendungsfälle ab.
Viele Hosting-Provider stellen in ihren Dokumentationen Anleitungen für diese Clients bereit. Das erleichtert den Einstieg, besonders wenn du von klassischem FTP auf SFTP umsteigst.
SSH-Tunneling für sichere Verbindungen nutzen
SSH-Tunneling ermöglicht es, unsichere Dienste über eine verschlüsselte SSH-Verbindung zu erreichen. Das ist besonders wichtig für Datenbank-Zugriffe oder Webinterfaces, die nicht direkt im Internet erreichbar sein sollen.
Lokale Portweiterleitung
Bei der lokalen Portweiterleitung wird ein Port auf deinem lokalen Rechner auf einen Port des entfernten Servers weitergeleitet. Der Befehl lautet: ssh -L lokaler_port:zielhost:zielport user@host.
Der sichere Zugriff auf eine MySQL-Datenbank: ssh -L 3306:localhost:3306 user@server. Nach diesem Befehl kannst du mit deinem lokalen Datenbank-Client auf localhost:3306 zugreifen. SSH leitet die Verbindung verschlüsselt zum Server weiter, wo sie an den MySQL-Port 3306 weitergegeben wird.
Diese Methode funktioniert auch für PostgreSQL (Port 5432) oder andere Dienste. Der Vorteil: Die Datenbank muss nicht öffentlich erreichbar sein und ist trotzdem von deinem Rechner aus nutzbar.
Remote-Portweiterleitung
Die Remote-Portweiterleitung funktioniert umgekehrt: Ein Port auf dem entfernten Server wird auf deinen lokalen Rechner weitergeleitet. Der Befehl lautet: ssh -R remote_port:localhost:lokaler_port user@host.
Typisch ist das Testen lokaler Entwicklungen: Du entwickelst eine Website auf deinem lokalen Rechner und möchtest sie einem Kollegen zeigen, ohne sie zu deployen. Mit ssh -R 8080:localhost:3000 user@server wird dein lokaler Webserver auf Port 3000 über Port 8080 des entfernten Servers erreichbar.
Dynamisches Tunneling als SOCKS-Proxy
Dynamisches Tunneling verwandelt SSH in einen SOCKS-Proxy. Der gesamte Netzwerkverkehr deines Browsers kann durch diesen Tunnel geleitet werden. Der Befehl lautet: ssh -D lokaler_port user@host.
Beispiel: ssh -D 8080 user@server startet einen SOCKS-Proxy auf localhost:8080. Du konfigurierst deinen Browser, diesen Proxy zu nutzen und surfst dann über die Verbindung des entfernten Servers. Das ist besonders nützlich in unsicheren Netzwerken wie öffentlichem WLAN, wo du deine Verbindung schützen möchtest.
SSH-Server auf deinem Webserver einrichten
Wer einen eigenen vServer oder Root-Server betreibt, muss den SSH-Server korrekt konfigurieren. Die folgenden Schritte gelten für Ubuntu und Debian, die häufigsten Betriebssysteme im Webhosting.
Installation und Aktivierung
Die Installation ist schnell erledigt:
- Installiere das Paket:
sudo apt install openssh-server - Starte den Dienst:
sudo systemctl start ssh - Aktiviere den Autostart:
sudo systemctl enable ssh - Prüfe den Status:
sudo systemctl status ssh
Nach diesen Schritten läuft der SSH-Server und startet automatisch bei jedem Systemneustart. Der Dienst heißt unter Debian und Ubuntu ssh, auf manchen anderen Systemen sshd.
Wichtige Konfigurationseinstellungen
Die Hauptkonfigurationsdatei liegt unter /etc/ssh/sshd_config. Hier legst du die Sicherheitseinstellungen fest. Ähnlich wie bei .htaccess-Dateien für Webserver-Konfigurationen hat auch SSH seine eigene Syntax für Einstellungen.
Die wichtigsten Parameter:
- Port: Ändere den Standard-Port 22 auf einen anderen Wert, etwa 2222. Das reduziert automatisierte Angriffe deutlich.
- PermitRootLogin no: Verbietet die direkte Anmeldung als Root-Benutzer. Nutze stattdessen einen normalen Benutzer mit sudo-Rechten.
- PasswordAuthentication no: Deaktiviert die Passwort-Authentifizierung. Aktiviere diese Option erst, wenn die Schlüssel-Authentifizierung funktioniert.
- AllowUsers user1 user2: Erlaubt nur bestimmten Benutzern den SSH-Zugriff. Alle anderen werden abgewiesen.
Nach jeder Änderung musst du den Dienst neu laden: sudo systemctl reload ssh. Ein Neustart ist nicht nötig, bestehende Verbindungen bleiben aktiv.
Firewall-Regeln anpassen
Ohne Firewall-Freigabe ist der SSH-Port nicht erreichbar. Unter Ubuntu nutzt du UFW (Uncomplicated Firewall): sudo ufw allow 22/tcp gibt den Standard-Port frei. Wenn du den Port geändert hast, passt du den Befehl an: sudo ufw allow 2222/tcp.
Wichtig: Teste die Schlüssel-Authentifizierung, bevor du die Passwort-Anmeldung deaktivierst. Sonst sperrst du dich möglicherweise aus. Halte eine zweite SSH-Sitzung offen, bis du sicher bist, dass alles funktioniert.
Viele Hosting-Provider haben zusätzliche Firewall-Ebenen im Control Panel. Prüfe dort ebenfalls, ob der SSH-Port freigegeben ist. Manche Provider bieten auch Web-basierte Firewalls, die unabhängig von der Server-Firewall arbeiten.
SSH-Sicherheit für deinen Server maximieren
Ein öffentlich erreichbarer SSH-Server wird ständig angegriffen. Automatisierte Bots scannen das Internet nach offenen Ports und versuchen, sich anzumelden. Nach unserer Erfahrung gehören die folgenden Maßnahmen zu den wichtigsten Schritten für die Absicherung.
Fail2ban gegen Brute-Force-Angriffe
Fail2ban überwacht Log-Dateien und blockiert IP-Adressen nach mehreren fehlgeschlagenen Login-Versuchen. Die Installation: sudo apt install fail2ban. Die Standardkonfiguration schützt bereits SSH: Nach fünf fehlgeschlagenen Versuchen wird die IP-Adresse für zehn Minuten gesperrt.
Fail2ban arbeitet im Hintergrund und benötigt keine manuelle Einrichtung. Du kannst die Einstellungen in /etc/fail2ban/jail.conf anpassen, etwa die Anzahl der Versuche oder die Sperrdauer. Für die meisten Anwendungsfälle reicht die Standardkonfiguration.
Starke SSH-Schlüssel verwenden
Nicht alle SSH-Schlüssel sind gleich sicher. RSA-Schlüssel sollten mindestens 4096 Bit lang sein: ssh-keygen -t rsa -b 4096. Moderne Systeme unterstützen auch Ed25519, einen neueren Algorithmus mit hoher Sicherheit bei kürzeren Schlüsseln: ssh-keygen -t ed25519.
Schütze deinen privaten Schlüssel zusätzlich mit einer Passphrase. Diese wird bei jeder Nutzung des Schlüssels abgefragt und verhindert Missbrauch, falls jemand Zugriff auf deine Dateien erhält. Die Passphrase sollte stark sein, mindestens 12 Zeichen mit Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen.
SSH-Port ändern
Die Änderung des Standard-Ports 22 erschwert automatisierte Angriffe erheblich. Bots scannen primär Port 22, unübliche Ports werden seltener gefunden. Wähle einen Port zwischen 1024 und 65535, etwa 2222 oder 22000.
Ändere den Port in /etc/ssh/sshd_config: Port 2222. Passe die Firewall-Regel an: sudo ufw allow 2222/tcp und sudo ufw delete allow 22/tcp. Lade den SSH-Dienst neu: sudo systemctl reload ssh.
Wichtig: Merke dir den neuen Port. Bei der Verbindung musst du ihn angeben: ssh -p 2222 user@host. Ohne den Parameter -p versucht SSH, Port 22 zu nutzen und die Verbindung schlägt fehl.
Veraltete Algorithmen deaktivieren
Alte Verschlüsselungsalgorithmen wie DSA oder SHA1-basierte MACs gelten als unsicher. Moderne SSH-Versionen nutzen standardmäßig sichere Algorithmen jedoch können ältere Systeme noch veraltete Verfahren aktiviert haben.
Empfohlene Einstellungen für sshd_config:
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-512,hmac-sha2-256
Diese Konfiguration erlaubt nur AES-GCM-Verschlüsselung und SHA2-basierte MACs. Nach der Änderung lädst du den Dienst neu: sudo systemctl reload ssh. Teste die Verbindung, um sicherzustellen, dass dein Client die Algorithmen unterstützt.
SSH-Konfiguration für komfortables Arbeiten
Wer mehrere Server verwaltet, profitiert von SSH-Konfigurationsdateien und Hilfswerkzeugen. Diese Features sparen Zeit und machen die tägliche Arbeit angenehmer.
SSH-Config-Datei nutzen
Die Datei ~/.ssh/config speichert Verbindungsparameter für häufig genutzte Server. Du vergibst einen kurzen Alias und hinterlegst alle Details. Eine Beispiel-Konfiguration:
Host meinserver
HostName server.beispiel.de
User admin
Port 2222
IdentityFile ~/.ssh/mein_schluessel
Nach dieser Konfiguration reicht der Befehl ssh meinserver. SSH nutzt automatisch die hinterlegten Werte für Hostname, Benutzer, Port und Schlüssel. Du kannst beliebig viele Hosts in der Config-Datei definieren.
ssh-agent für Passphrase-Verwaltung
Wenn deine SSH-Schlüssel mit Passphrasen geschützt sind, musst du diese bei jeder Verbindung eingeben. Der ssh-agent speichert entschlüsselte Schlüssel im Speicher und erspart dir wiederholte Eingaben.
Starte den Agent: ssh-agent bash. Füge deinen Schlüssel hinzu: ssh-add ~/.ssh/mein_schluessel. Gib die Passphrase einmal ein. Alle weiteren SSH-Verbindungen in dieser Session nutzen den gespeicherten Schlüssel ohne erneute Abfrage.
Der Agent läuft nur während der aktuellen Session. Nach dem Logout werden die Schlüssel aus dem Speicher entfernt. Das bietet Komfort ohne Sicherheitseinbußen.
Connection-Multiplexing aktivieren
SSH-Multiplexing ermöglicht es, mehrere SSH-Sitzungen über eine einzige TCP-Verbindung zu nutzen. Das beschleunigt den Verbindungsaufbau erheblich, da die Authentifizierung nur einmal erfolgt.
Füge diese Zeilen in ~/.ssh/config ein:
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 10m
Die erste Verbindung zu einem Host baut die Master-Connection auf. Alle weiteren Verbindungen nutzen diese bestehende Verbindung. ControlPersist 10m hält die Verbindung zehn Minuten nach der letzten Nutzung offen. Das ist besonders praktisch, wenn du häufig neue Terminal-Fenster oder SCP-Transfers startest.
Typische SSH-Fehler erkennen und beheben
Verbindungsprobleme kosten Zeit und Nerven. Diese Übersicht hilft dir, häufige Fehler schnell zu identifizieren und zu lösen.
Connection refused
Die Fehlermeldung „Connection refused“ bedeutet, dass der Port nicht erreichbar ist. Mögliche Ursachen:
- Der SSH-Server läuft nicht. Prüfe den Status:
systemctl status ssh. Starte den Dienst bei Bedarf:sudo systemctl start ssh. - Du nutzt den falschen Port. Wenn der Server Port 2222 nutzt, musst du
ssh -p 2222 user@hosteingeben. - Die Firewall blockiert die Verbindung. Prüfe die Firewall-Regeln und gib den SSH-Port frei.
Der Verbose-Modus hilft bei der Diagnose: ssh -v user@host zeigt detailliert, wo die Verbindung scheitert.
Permission denied (publickey)
Dieser Fehler tritt auf, wenn die Schlüssel-Authentifizierung fehlschlägt. Häufige Ursachen:
- Der falsche Schlüssel wird verwendet. Gib den richtigen Schlüssel explizit an:
ssh -i ~/.ssh/mein_schluessel user@host. - Der öffentliche Schlüssel ist nicht auf dem Server hinterlegt. Kopiere ihn mit
ssh-copy-idoder füge ihn manuell in~/.ssh/authorized_keysein. - Die Dateirechte sind falsch. Das Verzeichnis
.sshbenötigt Rechte 700, die Dateiauthorized_keysRechte 600, private Schlüssel ebenfalls 600.
Der Verbose-Modus zeigt, welche Schlüssel SSH probiert: ssh -v user@host. Du siehst dann, ob der richtige Schlüssel verwendet wird.
REMOTE HOST IDENTIFICATION HAS CHANGED
Diese Warnung erscheint, wenn sich der Host-Key des Servers geändert hat. Mögliche Ursachen:
- Der Server wurde neu installiert. Das ist legitim und du kannst den alten Eintrag entfernen:
ssh-keygen -R hostname. - Ein Man-in-the-Middle-Angriff. Wenn du keine Neuinstallation durchgeführt hast, kläre die Ursache, bevor du fortfährst.
Host-Keys sind in ~/.ssh/known_hosts gespeichert. Die Warnung ist ein Sicherheitsfeature und sollte nicht ignoriert werden. Prüfe beim Provider nach, ob eine Wartung oder Neuinstallation stattgefunden hat.
Timeout-Probleme
Wenn die Verbindung abbricht oder gar nicht erst zustande kommt, liegt ein Netzwerkproblem vor. Diagnoseschritte:
- Prüfe die Erreichbarkeit:
ping hostname. Wenn der Server nicht antwortet, ist er offline oder nicht erreichbar. - Traceroute zeigt den Netzwerkpfad:
traceroute hostname. Du siehst, wo die Verbindung abbricht. - DNS-Auflösung testen:
nslookup hostname. Wenn die Auflösung fehlschlägt, ist der Hostname falsch oder der DNS-Server hat Probleme. - Provider-Status prüfen: Viele Hoster haben Status-Seiten, die Ausfälle oder Wartungen anzeigen.
Timeouts können auch an Firewalls oder NAT-Problemen liegen. Wenn der Server hinter einem Router steht, muss Port-Forwarding korrekt konfiguriert sein.
SSH-Alternativen und moderne Ansätze
SSH bleibt der Standard für klassische Server-Administration jedoch nutzen moderne Cloud- und Container-Umgebungen teilweise andere Zugriffskonzepte.
Bastion Hosts oder Jump Hosts fügen eine zusätzliche Sicherheitsebene hinzu. Statt direkt auf produktive Server zuzugreifen, verbindest du dich erst mit einem Bastion Host, der als Sprungbrett dient. Von dort aus erreichst du die eigentlichen Server. Dieser Ansatz wird in Unternehmen mit hohen Sicherheitsanforderungen eingesetzt und ermöglicht zentrale Zugriffskontrolle und Protokollierung.
Container-Umgebungen wie Docker und Kubernetes vermeiden oft direkten SSH-Zugriff. Stattdessen nutzt du Befehle wie docker exec oder kubectl exec, um in laufende Container zu gelangen. Diese Methoden sind für kurzlebige Container besser geeignet als klassische SSH-Verbindungen. SSH-Server in Containern gelten als Anti-Pattern, da sie zusätzliche Komplexität und Sicherheitsrisiken einführen.
Web-basierte Terminals in Control Panels wie Plesk oder cPanel bieten einfachen Zugriff ohne lokalen SSH-Client. Diese Terminals nutzen oft WebSockets statt SSH und laufen direkt im Browser. Für schnelle Eingriffe sind sie praktisch, ersetzen jedoch nicht die Flexibilität eines vollwertigen SSH-Clients. Viele Hosting-Provider bieten solche Web-Terminals als zusätzliche Zugriffsoption an, besonders für Einsteiger, die keine SSH-Clients installieren möchten.
SSH im DevOps-Kontext nutzen
Moderne Deployment-Prozesse und automatisierte Server-Verwaltung basieren auf SSH. Wer CI/CD-Pipelines oder Git-Deployments nutzt, benötigt fundierte SSH-Kenntnisse.
Git-Deployments über SSH
Git-Plattformen wie GitHub, GitLab und Bitbucket nutzen SSH für sichere Repository-Zugriffe. Du hinterlegst deinen öffentlichen SSH-Schlüssel in den Kontoeinstellungen der Plattform. Danach kannst du Repositories klonen und pushen, ohne bei jedem Zugriff Passwörter einzugeben.
Ein Repository klonen: git clone git@github.com:benutzer/repository.git. Die Authentifizierung erfolgt automatisch über deinen SSH-Schlüssel. Für automatisierte Deployments richtest du Git-Hooks ein, die nach jedem Push Code auf deinen Webserver übertragen. Du pushst Code auf GitHub, ein Post-Receive-Hook verbindet sich per SSH mit deinem Webserver und führt ein Deployment-Skript aus. Dieses Skript pullt die neuesten Änderungen und startet Dienste neu.
CI/CD-Pipelines mit SSH
Continuous Integration und Continuous Deployment nutzen SSH für den Zugriff auf Produktionsserver. Tools wie Jenkins, GitLab CI oder GitHub Actions verbinden sich per SSH mit deinen Servern und führen Deployment-Befehle aus.
Du hinterlegst SSH-Schlüssel in deiner CI/CD-Umgebung. Die Pipeline nutzt diese Schlüssel, um sich bei Deployments anzumelden. Wichtig ist, dass diese Schlüssel nur minimale Rechte haben und nur für Deployment-Aufgaben genutzt werden. Separate Deployment-Benutzer mit eingeschränkten Rechten erhöhen die Sicherheit. Nach erfolgreichem Build verbindet sich die Pipeline per SSH mit dem Produktionsserver, kopiert neue Dateien, führt Datenbank-Migrationen aus und startet Dienste neu.
Fazit: SSH als unverzichtbares Werkzeug für dein Webhosting
SSH ist der Industriestandard für sichere Server-Verwaltung und wird es auf absehbare Zeit bleiben. Die Verschlüsselung schützt deine Zugangsdaten und Daten zuverlässig, die Authentifizierung über Schlüssel bietet hohe Sicherheit bei gleichzeitigem Komfort. Wer einen vServer oder Root-Server betreibt, kommt um SSH nicht herum.
Wir empfehlen: Nutze ausschließlich Schlüssel-Authentifizierung, deaktiviere Passwort-Logins und setze Fail2ban ein. Ändere den Standard-Port und halte deine SSH-Version aktuell. Diese Maßnahmen gehören zu den wichtigsten Schritten für die Absicherung. Für Dateiübertragungen ersetzt SFTP das unsichere FTP vollständig, SSH-Tunneling ermöglicht sicheren Zugriff auf interne Dienste und damit reduzierst du das Risiko unbefugter Zugriffe erheblich.
Brauchst du Hilfe bei der Wahl des richtigen Hostinganbieters?
- 100 % kostenlos und unverbindlich
- Persönliche Empfehlung
- Antwort innerhalb von 24 Stunden
Häufig gestellte Fragen
Was ist der Unterschied zwischen SSH und SSL?
SSH und SSL sind beide Verschlüsselungsprotokolle, dienen jedoch unterschiedlichen Zwecken. SSH ist für sichere Terminal-Sitzungen und Remote-Administration konzipiert. SSL (heute TLS) wird für verschlüsselte Webverbindungen genutzt, etwa HTTPS. SSH authentifiziert sowohl Client als auch Server gegenseitig, während bei SSL meist nur der Server authentifiziert wird. Die Protokolle sind nicht kompatibel und können nicht gegeneinander ausgetauscht werden.
Kann ich SSH auf Shared Hosting nutzen?
Bei Shared Hosting ist SSH oft eingeschränkt oder gar nicht verfügbar. Viele Anbieter bieten SSH nur bei höherwertigen Tarifen an, da der Zugriff auf die Kommandozeile Sicherheitsrisiken birgt. Bei vServern, Root-Servern und Cloud-Servern gehört SSH zur Standardausstattung. Prüfe die Leistungsbeschreibung deines Hosting-Pakets oder frage beim Support nach, ob SSH verfügbar ist.
Wie sichere ich meinen SSH-Server gegen Angriffe?
Die wirksamsten Maßnahmen sind: Deaktiviere Passwort-Authentifizierung und nutze nur SSH-Schlüssel. Verbiete Root-Login über SSH. Installiere Fail2ban, um Brute-Force-Angriffe zu blockieren. Ändere den Standard-Port 22 auf einen unüblichen Wert. Halte dein System und OpenSSH aktuell. Nutze starke Schlüssel (RSA 4096 Bit oder Ed25519) mit Passphrase-Schutz. Diese Kombination gehört zu den wichtigsten Maßnahmen für die Absicherung.
Was mache ich, wenn ich mich aus meinem Server ausgesperrt habe?
Wenn du dich ausgesperrt hast, benötigst du alternativen Zugriff. Viele Hosting-Provider bieten eine Web-Konsole oder VNC-Zugriff im Control Panel an. Darüber kannst du dich einloggen und die SSH-Konfiguration korrigieren. Bei Root-Servern kannst du oft ein Rescue-System booten und von dort aus Änderungen vornehmen. Kontaktiere im Notfall den Support deines Providers, der dir Zugriff verschaffen kann.
Wie übertrage ich große Dateien am besten über SSH?
Für große Dateien eignet sich rsync über SSH am besten. Der Befehl rsync -avz -e ssh datei user@host:/pfad/ überträgt Dateien effizient und kann unterbrochene Übertragungen fortsetzen. rsync überträgt nur geänderte Teile, was bei wiederholten Transfers Zeit spart. Für einmalige Übertragungen ist SCP ausreichend: scp große_datei.zip user@host:/pfad/. Beide Methoden nutzen SSH-Verschlüsselung und sind sicher.
Kann ich mehrere SSH-Schlüssel für verschiedene Server nutzen?
Ja, du kannst beliebig viele SSH-Schlüssel erstellen und für verschiedene Server nutzen. Erstelle für jeden Server oder jede Anwendung einen eigenen Schlüssel. In der Datei ~/.ssh/config gibst du für jeden Host den passenden Schlüssel an: IdentityFile ~/.ssh/schluessel_server1. Das erhöht die Sicherheit, da ein kompromittierter Schlüssel nur Zugriff auf einen Server gewährt. Du kannst auch verschiedene Schlüssel für verschiedene Zwecke nutzen, etwa einen für Git und einen für Server-Administration.
Wie finde ich heraus, welche SSH-Version auf meinem Server läuft?
Auf dem Server selbst gibst du ssh -V ein. Das zeigt die installierte OpenSSH-Version an. Von außen kannst du die Version mit ssh -v user@host ermitteln. In der Verbose-Ausgabe siehst du die Server-Version während des Verbindungsaufbaus. Alternativ zeigt nc hostname 22 die SSH-Banner-Nachricht, die oft die Version enthält. Halte SSH immer aktuell, da ältere Versionen bekannte Sicherheitslücken haben können.
Was ist der Unterschied zwischen SCP und SFTP?
Beide Protokolle nutzen SSH für sichere Dateiübertragung, unterscheiden sich jedoch in der Bedienung. SCP ist für schnelle Einzelübertragungen gedacht und funktioniert ähnlich wie der Unix-Befehl cp. Du gibst Quelle und Ziel an, SCP kopiert die Datei und beendet sich. SFTP bietet eine interaktive Sitzung mit FTP-ähnlichen Befehlen. Du kannst Verzeichnisse durchsuchen, mehrere Dateien übertragen und Dateien verwalten. Für einmalige Transfers ist SCP schneller, für komplexere Aufgaben ist SFTP flexibler.
geschrieben von:
Jason Carter
Mein Name ist Jason Carter und ich konzentriere mich auf den technischen Bereich von Webhosting Vorteil. Mit über 10 Jahren Erfahrung in der IT-Branche bringe ich umfangreiche Kenntnisse und Expertise im Bereich Webhosting mit. Ich teste verschiedene Hosting-Anbieter, schreibe detaillierte Bewertungen und Vergleiche und arbeite kontinuierlich daran, die Website zu verbessern, damit Besucher die bestmögliche Erfahrung erhalten.
Auch interessant
Wir helfen dir, den besten Webhoster zu finden
Kostenlose beratung






