SSH-Verbindung herstellen: vollständige Anleitung für Einsteiger
Eine Verbindung per SSH herzustellen ist eine wesentliche Fähigkeit für alle, die eine Website oder einen Server verwalten. SSH (Secure Shell) bietet eine sichere, verschlüsselte Verbindung zu Ihrem Server, über die Sie Befehle ausführen, Dateien verwalten und Konfigurationen anpassen können. In dieser vollständigen Anleitung lernen Sie Schritt für Schritt, wie Sie eine Verbindung per SSH herstellen, egal ob Sie Windows, Mac oder Linux verwenden.
Was ist SSH und warum eine Verbindung per SSH herstellen?
SSH steht für Secure Shell und ist ein Netzwerkprotokoll, das eine gesicherte Verbindung zwischen Ihrem Computer und einem entfernten Server aufbaut. Alle Daten, die über SSH gesendet werden, einschließlich Passwörtern und Befehlen, werden verschlüsselt. Dadurch lassen sich sensible Aufgaben wie die Serververwaltung sicher erledigen, selbst über ungesicherte Netzwerke. Eine Verbindung per SSH ist der Standardweg, um VPS und Dedicated Server zu verwalten.
SSH im Vergleich zu anderen Verbindungsmethoden
| Protokoll | Verschlüsselt | Einsatz | Sicherheit |
|---|---|---|---|
| SSH | Ja (vollständig) | Serververwaltung, Dateiübertragung | Ausgezeichnet |
| FTP | Nein | Dateiübertragung | Unsicher |
| SFTP | Ja (über SSH) | Dateiübertragung | Ausgezeichnet |
| Telnet | Nein | Serververwaltung (veraltet) | Unsicher |
| RDP | Ja | Windows Remote Desktop | Gut |
Wie Sie sehen, ist SSH deutlich sicherer als herkömmliche Protokolle wie FTP und Telnet. Wo Sie früher FTP für die Dateiübertragung verwendet haben, können Sie mit SSH auch Dateien über SFTP oder SCP verwalten.
Was brauchen Sie, um eine SSH-Verbindung herzustellen?
Bevor Sie eine SSH-Verbindung herstellen können, benötigen Sie folgende Informationen von Ihrem Hosting-Anbieter:
- IP-Adresse oder Hostname des Servers: die Adresse Ihres Servers
- Benutzername: oft "root" bei einem neuen VPS oder ein eigener Benutzer
- Passwort oder SSH-Key: Ihre Authentifizierungsmethode
- Portnummer: standardmäßig Port 22, manchmal aber für zusätzliche Sicherheit geändert
- SSH-Client: die Software, mit der Sie die Verbindung herstellen
SSH-Verbindung unter Windows herstellen
Windows 10 und 11 haben einen integrierten SSH-Client, sodass Sie keine zusätzliche Software mehr installieren müssen, um eine SSH-Verbindung herzustellen.
Methode 1: Windows Terminal oder PowerShell
- Öffnen Sie Windows Terminal oder PowerShell (Suche im Startmenü)
- Geben Sie den SSH-Befehl ein:
ssh gebruikersnaam@ip-adres - Wenn der Port nicht der Standardport (22) ist, verwenden Sie:
ssh -p poortnummer gebruikersnaam@ip-adres - Bei der ersten Verbindung fragt SSH, ob Sie dem Server-Fingerprint vertrauen: Geben Sie "yes" ein
- Geben Sie Ihr Passwort ein (die Zeichen werden nicht angezeigt, das ist normal)
- Sie sind jetzt mit Ihrem Server verbunden
Methode 2: PuTTY (klassischer SSH-Client)
PuTTY ist seit Jahren der beliebteste SSH-Client für Windows und bietet zusätzliche Funktionen wie gespeicherte Sitzungen und Port-Forwarding:
- Laden Sie PuTTY von der offiziellen Website herunter (putty.org)
- Öffnen Sie PuTTY und geben Sie die IP-Adresse bei "Host Name" ein
- Prüfen Sie, ob der Port korrekt ist (standardmäßig 22)
- Wählen Sie "SSH" als Verbindungstyp
- Optional: Speichern Sie die Sitzung für später
- Klicken Sie auf Open
- Akzeptieren Sie bei der ersten Verbindung den Server-Fingerprint
- Melden Sie sich mit Ihrem Benutzernamen und Passwort an
SSH-Verbindung unter macOS herstellen
macOS hat einen integrierten SSH-Client in der Terminal-App. Eine SSH-Verbindung auf dem Mac herzustellen ist besonders einfach:
- Öffnen Sie das Terminal (Programme > Dienstprogramme > Terminal, oder suchen Sie über Spotlight)
- Geben Sie ein:
ssh gebruikersnaam@ip-adres - Für einen anderen Port als den Standardport:
ssh -p poortnummer gebruikersnaam@ip-adres - Akzeptieren Sie bei der ersten Verbindung den Server-Fingerprint ("yes")
- Geben Sie Ihr Passwort ein
- Sie sind verbunden
SSH-Verbindung unter Linux herstellen
Unter Linux ist SSH standardmäßig installiert. Öffnen Sie Ihr Terminal und verwenden Sie dieselben Befehle wie unter macOS. Der SSH-Client ist auf allen Linux-Distributionen ohne zusätzliche Installation verfügbar.
SSH-Keys einrichten: sicherer als Passwörter
Die Verwendung von SSH-Keys statt Passwörtern ist die empfohlene Methode, um eine SSH-Verbindung herzustellen. SSH-Keys sind kryptografische Schlüsselpaare, die praktisch nicht zu knacken sind.
SSH-Key erzeugen
- Öffnen Sie Ihr Terminal (unter Windows: PowerShell)
- Führen Sie den Befehl aus:
ssh-keygen -t ed25519 -C "je-email@example.com" - Wählen Sie einen Speicherort für den Schlüssel (der Standard ist in Ordnung)
- Geben Sie optional eine Passphrase für zusätzliche Sicherheit ein
- Es werden zwei Dateien angelegt: der Private Key (geheim halten) und der Public Key (.pub)
Public Key auf den Server kopieren
Kopieren Sie Ihren öffentlichen Schlüssel mit dem Befehl ssh-copy-id auf den Server:
ssh-copy-id -i ~/.ssh/id_ed25519.pub gebruikersnaam@ip-adres
Nach dem Kopieren können Sie sich ohne Passwort anmelden. Der Server prüft Ihre Identität anhand Ihres Private Keys, der auf Ihrem Computer liegt.
SSH-Konfigurationsdatei: Verbindungen speichern
Wenn Sie sich regelmäßig mit mehreren Servern verbinden, können Sie das Herstellen der SSH-Verbindung mit einer SSH-Konfigurationsdatei (~/.ssh/config) vereinfachen. Darin definieren Sie Aliasse für Ihre Server:
Beispiel für eine SSH-Konfiguration
In Ihrer SSH-Konfigurationsdatei können Sie für jeden Server einen Block mit Hostname, IP-Adresse, Benutzername, Portnummer und dem Pfad zum richtigen SSH-Key anlegen. Nach der Konfiguration müssen Sie nur noch einen kurzen Alias eingeben, um sich zu verbinden, statt des vollständigen Befehls mit allen Parametern.
Dateien über SSH übertragen
Neben der Serververwaltung können Sie SSH auch für die sichere Übertragung von Dateien nutzen. Es gibt zwei Hauptmethoden:
SCP (Secure Copy)
- Datei hochladen:
scp bestand.txt gebruiker@server:/pad/naar/doel/ - Datei herunterladen:
scp gebruiker@server:/pad/naar/bestand.txt ./lokaal/ - Verzeichnis hochladen:
scp -r mapnaam/ gebruiker@server:/pad/naar/doel/
SFTP (SSH File Transfer Protocol)
SFTP bietet eine interaktive Sitzung zur Dateiübertragung über SSH. Sie können mit Befehlen wie ls, cd, get und put navigieren, Dateien ansehen und übertragen. Viele grafische FTP-Clients wie FileZilla unterstützen auch SFTP-Verbindungen.
SSH-Tunneling und Port-Forwarding
Eine fortgeschrittene Anwendung von SSH ist das Einrichten von Tunneln, mit denen Sie Traffic von Ihrem lokalen Computer über den Server leiten können. Das ist nützlich, um sicher auf Dienste zuzugreifen, die nicht direkt erreichbar sind, etwa eine phpMyAdmin-Installation, die nur lokal erreichbar ist.
Local Port Forwarding
Mit Local Port Forwarding machen Sie einen Dienst auf dem Server über einen Port auf Ihrem lokalen Computer erreichbar. So können Sie zum Beispiel phpMyAdmin über localhost in Ihrem Browser öffnen, während es tatsächlich auf dem Server läuft.
Remote Port Forwarding
Remote Port Forwarding funktioniert in umgekehrter Richtung: Es macht einen Dienst auf Ihrem lokalen Computer über den Server erreichbar. Das ist praktisch, um anderen eine lokale Entwicklungsumgebung vorzuführen.
Häufige SSH-Probleme lösen
Beim Herstellen einer SSH-Verbindung können verschiedene Probleme auftreten. Hier sind die häufigsten Probleme und ihre Lösungen:
Connection refused
Das bedeutet, dass der SSH-Dienst auf dem Server nicht läuft oder eine Firewall die Verbindung blockiert. Prüfen Sie, ob der SSH-Dienst aktiv ist und ob der richtige Port in der Firewall geöffnet ist.
Permission denied
Ihr Passwort oder SSH-Key wird nicht akzeptiert. Prüfen Sie, ob Sie den richtigen Benutzernamen und das richtige Passwort verwenden. Prüfen Sie bei SSH-Keys, ob Ihr öffentlicher Schlüssel korrekt auf dem Server liegt und ob die Rechte des .ssh-Verzeichnisses stimmen (700 für das Verzeichnis, 600 für die Dateien).
Connection timed out
Der Server antwortet nicht. Prüfen Sie, ob die IP-Adresse korrekt ist, ob der Server online ist und ob keine Netzwerkprobleme vorliegen. Prüfen Sie auch, ob der SSH-Port geändert wurde.
Host key verification failed
Der Fingerprint des Servers hat sich seit Ihrer letzten Verbindung geändert. Das kann nach einer Neuinstallation des Servers passieren. Wenn Sie sicher sind, dass der Server legitim ist, entfernen Sie den alten Schlüssel aus Ihrer known_hosts-Datei.
Best Practices für die SSH-Sicherheit
Eine SSH-Verbindung ist dank Verschlüsselung grundsätzlich sicher, es gibt aber zusätzliche Maßnahmen, die die Sicherheit weiter erhöhen:
- Verwenden Sie SSH-Keys statt Passwörtern
- Deaktivieren Sie die Passwort-Authentifizierung, nachdem Sie Keys eingerichtet haben
- Ändern Sie den Standard-SSH-Port von 22 auf eine beliebige Nummer
- Sperren Sie den Root-Login über SSH (verwenden Sie einen sudo-Benutzer)
- Installieren Sie fail2ban, um Brute-Force-Angriffe zu blockieren
- Halten Sie SSH-Client und Server aktuell
- Verwenden Sie eine Passphrase für Ihren Private Key
Lesen Sie auch unseren Leitfaden zum Thema Website absichern für weitere Sicherheitsmaßnahmen, die Sie ergreifen können, nachdem Sie eine SSH-Verbindung eingerichtet haben.
Das Herstellen einer SSH-Verbindung ist eine grundlegende Fähigkeit, die jeder Website- und Serveradministrator beherrschen sollte. Mit den Schritten in dieser Anleitung können Sie sich sicher mit Ihrem Server verbinden, Dateien übertragen und fortgeschrittene Funktionen wie SSH-Tunneling nutzen. Beginnen Sie mit den Grundfunktionen und erweitern Sie Ihr Wissen schrittweise, je mehr Erfahrung Sie mit der Serververwaltung sammeln.
SSH in der Praxis: häufig genutzte Workflows
Wenn Sie die Grundlagen beherrschen, gibt es praktische SSH-Workflows, die Ihre tägliche Serververwaltung effizienter machen.
Mehrere Server mit SSH verwalten
Wenn Sie mehrere Server verwalten, wird eine gut organisierte SSH-Konfigurationsdatei unverzichtbar. Definieren Sie Aliasse für alle Ihre Server, damit Sie sich mit einem kurzen Befehl verbinden können. Nutzen Sie Tools wie Ansible oder Fabric, um dieselben Befehle auf mehreren Servern gleichzeitig auszuführen. Das spart enorm viel Zeit bei Aufgaben wie dem Ausrollen von Updates oder dem Prüfen des Serverstatus.
SSH Agent Forwarding
Mit SSH Agent Forwarding können Sie Ihre lokalen SSH-Keys über einen zwischengeschalteten Server verwenden. Das ist nützlich, wenn Sie sich von einem Bastion Host aus mit internen Servern verbinden. Statt Ihren Private Key auf dem zwischengeschalteten Server abzulegen, wird die Authentifizierung an Ihren lokalen SSH-Agent weitergeleitet. Das erhöht die Sicherheit erheblich.
Automatisierte Aufgaben über SSH
Kombinieren Sie eine SSH-Verbindung mit Skripten, um Aufgaben zu automatisieren. Sie können von einem lokalen Skript aus SSH-Befehle auf einem entfernten Server ausführen, ohne sich interaktiv anzumelden. Das ist die Grundlage für Deployment-Skripte, Monitoring-Checks und automatisierte Backups. Sorgen Sie dafür, dass die Authentifizierung per SSH-Key für den passwortlosen Zugang korrekt konfiguriert ist.
SSH-Alternativen und ergänzende Tools
Neben dem Standard-SSH-Client gibt es ergänzende Tools, die Ihre Arbeit mit der entfernten Serververwaltung verbessern. Mosh (Mobile Shell) ist eine SSH-Alternative, die besser mit instabilen Internetverbindungen umgeht und sich nach Unterbrechungen automatisch neu verbindet. Das ist besonders nützlich, wenn Sie unterwegs sind und die SSH-Verbindung über mobiles Internet herstellen. Termius und Royal TSX bieten grafische SSH-Clients mit fortgeschrittenen Funktionen wie Tabs, Sitzungsverwaltung und SFTP-Integration. Für Windows-Nutzer bietet Windows Terminal eine moderne Oberfläche, die SSH-Verbindungen mit PowerShell- und WSL-Sitzungen in einem einzigen Fenster mit Tabs und anpassbaren Themes vereint.
SSH-Verbindung herstellen: erweiterte Konfiguration mit Config-Datei
Wenn Sie sich regelmäßig mit mehreren Servern verbinden, wird das Eintippen vollständiger SSH-Befehle schnell unpraktisch. Die SSH-Config-Datei bietet eine elegante Lösung, indem sie Verbindungsdaten speichert und wiederverwendbar macht.
Die Config-Datei liegt unter ~/.ssh/config und enthält pro Server einen Block mit allen Verbindungseinstellungen. Damit können Sie statt eines langen Befehls mit Port, Benutzername und Schlüsseldatei einfach einen kurzen Alias verwenden.
Nützliche SSH-Config-Optionen
| Option | Funktion | Beispiel |
|---|---|---|
| Host | Alias für die Verbindung | Host mijn-server |
| HostName | IP-Adresse oder Domain | HostName 192.168.1.100 |
| User | Benutzername | User admin |
| Port | SSH-Portnummer | Port 7777 |
| IdentityFile | Pfad zum Private Key | IdentityFile ~/.ssh/id_server |
| ServerAliveInterval | Keep-alive-Intervall in Sekunden | ServerAliveInterval 60 |
| ProxyJump | Über einen anderen Server verbinden | ProxyJump bastion |
Mit ProxyJump können Sie sich über einen Bastion Host oder Jump Server mit Servern verbinden, die nicht direkt über das Internet erreichbar sind. Das ist eine verbreitete Sicherheitsmaßnahme, bei der der gesamte SSH-Zugang über einen zentralen Punkt geleitet wird.
SSH-Verbindung herstellen: Tunneling und Port-Forwarding
SSH ist weit mehr als nur eine Terminal-Verbindung. Mit SSH-Tunneling können Sie sichere Verbindungen zu Diensten aufbauen, die normalerweise nicht direkt erreichbar sind. Das ist eine unverzichtbare Technik, um Datenbanken, Weboberflächen und andere Dienste auf Ihrem Server sicher zu verwalten.
Es gibt drei Formen von SSH-Port-Forwarding:
- Local Port Forwarding (-L): Machen Sie einen Dienst auf dem Server über einen lokalen Port erreichbar. Ideal, um zum Beispiel phpMyAdmin oder Grafana lokal aufzurufen, ohne sie öffentlich freizugeben.
- Remote Port Forwarding (-R): Machen Sie einen lokalen Dienst über den Server erreichbar. Praktisch zum Testen von Webhooks oder zum Teilen einer lokalen Entwicklungsumgebung.
- Dynamic Port Forwarding (-D): Erstellen Sie einen SOCKS-Proxy über den Server. Ihr gesamter Traffic wird verschlüsselt über die SSH-Verbindung geleitet.
Local Port Forwarding ist die meistgenutzte Variante. Angenommen, auf Ihrem Server läuft eine MySQL-Datenbank, die nur lokal erreichbar ist (Best Practice für die VPS-Absicherung). Mit Local Port Forwarding verbinden Sie Ihren lokalen Port 3306 mit dem MySQL-Port auf dem Server, sodass Sie mit einem lokalen Datenbank-Client arbeiten können, als liefe die Datenbank auf Ihrem eigenen Computer.
SSH-Sicherheit: Schlüsselverwaltung und Best Practices
Eine SSH-Verbindung ist sicher, aber nur, wenn Sie Schlüssel und Konfiguration korrekt verwalten. Befolgen Sie diese Best Practices für maximale Sicherheit:
- Verwenden Sie ED25519-Schlüssel: Das ist der neueste und sicherste Schlüsseltyp. RSA-Schlüssel sind mit 4096 Bit weiterhin sicher, ED25519 ist aber schneller und kompakter.
- Schützen Sie Schlüssel mit einer Passphrase: Eine Passphrase für Ihren Private Key schützt Sie selbst dann, wenn jemand Zugriff auf Ihren Computer erhält. Verwenden Sie ssh-agent, um die Passphrase zwischenzuspeichern, damit Sie sie nicht ständig neu eingeben müssen.
- Rotieren Sie Schlüssel regelmäßig: Erzeugen Sie jährlich neue Schlüsselpaare und entfernen Sie alte Public Keys von Ihren Servern.
- Begrenzen Sie Schlüssel pro Server: Verwenden Sie für verschiedene Server eigene Schlüsselpaare. Wird ein Schlüssel kompromittiert, begrenzt das den Schaden.
- Konfigurieren Sie AllowUsers: Legen Sie in sshd_config fest, welche Benutzer sich per SSH anmelden dürfen. Das verhindert den Zugriff über unbeabsichtigte Konten.
Kombinieren Sie die SSH-Sicherheit mit einer Zwei-Faktor-Authentifizierung für maximalen Schutz. Verwenden Sie Linux-Befehle, um Ihre SSH-Konfiguration und die verbundenen Schlüssel auf Ihrem Server regelmäßig zu prüfen.
SSH-Verbindung herstellen: häufige Probleme lösen
Beim Einrichten und Pflegen von SSH-Verbindungen stoßen Sie regelmäßig auf Probleme. Diese Probleme schnell diagnostizieren und lösen zu können ist für eine effektive Serververwaltung unerlässlich.
Das häufigste Problem ist "Connection refused". Das bedeutet, dass der SSH-Dienst auf dem Server nicht läuft oder eine Firewall die Verbindung blockiert. Prüfen Sie über das Hosting-Panel, ob der Server eingeschaltet ist und ob der SSH-Port offen ist. "Permission denied (publickey)" weist darauf hin, dass Ihr SSH-Schlüssel nicht akzeptiert wird. Prüfen Sie, ob Ihr Public Key korrekt zur Datei authorized_keys auf dem Server hinzugefügt wurde und ob die Dateirechte korrekt gesetzt sind (700 für das .ssh-Verzeichnis und 600 für authorized_keys).
"Connection timed out" deutet oft auf ein Netzwerkproblem oder einen falschen Hostnamen und Port hin. Prüfen Sie, ob Sie die richtige IP-Adresse und Portnummer verwenden. Bei "Host key verification failed" hat sich der Server-Schlüssel seit Ihrer letzten Verbindung geändert, was auf eine Neuinstallation, aber auch auf einen Man-in-the-Middle-Angriff hindeuten kann. Prüfen Sie über einen anderen Kanal, ob der Server tatsächlich geändert wurde, bevor Sie den alten Schlüssel entfernen.
SSH-Verbindung herstellen: SFTP und SCP für die Dateiübertragung
Eine SSH-Verbindung bietet nicht nur Terminal-Zugang, sondern auch eine sichere Dateiübertragung über SFTP und SCP. Beide Protokolle nutzen die bestehende SSH-Verbindung für verschlüsselte Dateitransfers, was sie sicherer macht als unverschlüsseltes FTP.
SCP (Secure Copy) ist ideal für schnelle, einmalige Dateiübertragungen. Die Syntax ähnelt dem cp-Befehl, funktioniert aber über das Netzwerk. SFTP (SSH File Transfer Protocol) bietet eine interaktive Sitzung ähnlich wie herkömmliches FTP, aber vollständig verschlüsselt. SFTP unterstützt außerdem das Fortsetzen unterbrochener Transfers, Verzeichnislisten und Dateiverwaltung auf dem Server. Für eine grafische Dateiübertragung können Sie Tools wie FileZilla, WinSCP oder Cyberduck verwenden. Diese unterstützen SFTP und bieten eine vertraute Drag-and-drop-Oberfläche für die Dateiverwaltung auf Ihrem Server.
SSH-Verbindung: Automatisierung und Scripting
Ihre volle Stärke entfalten SSH-Verbindungen erst, wenn Sie sie mit Automatisierung kombinieren. Mit SSH können Sie Befehle auf entfernten Servern ohne interaktive Sitzung ausführen, was die Grundlage für automatisierte Serververwaltung und Deployment-Workflows bildet.
Mit der entfernten Befehlsausführung über SSH können Sie Aufgaben auf mehreren Servern gleichzeitig erledigen. Das ist besonders wertvoll, um Sicherheitsupdates einzuspielen, den Serverstatus zu prüfen oder Konfigurationsänderungen auf eine ganze Flotte von Servern auszurollen. Tools wie Ansible, Puppet und Chef bauen auf SSH auf, um die gesamte Serverkonfiguration zu automatisieren und reproduzierbar zu machen.
Für einfache Automatisierung genügt ein Bash-Skript, das über SSH Befehle auf Ihren Servern ausführt. Kombinieren Sie das mit Cronjobs für regelmäßige Aufgaben wie das Prüfen des Speicherplatzes, das Erneuern von SSL-Zertifikaten oder das Erstellen von Backups. Verwenden Sie für automatisierte Aufgaben SSH-Schlüssel ohne Passphrase, beschränken Sie diese Schlüssel aber über die Datei authorized_keys auf bestimmte Befehle, damit sie nicht für uneingeschränkten Zugriff missbraucht werden können.