Der Befehl ssh (Secure Shell) stellt eine verschlüsselte Verbindung zu einem entfernten Server her. Über diese Verbindung kannst du Befehle ausführen, Dateien übertragen und Netzwerkdienste tunneln.

Syntax des ssh-Befehls

ssh [OPTIONEN] [BENUTZER@]HOST [BEFEHL]
  • OPTIONEN - Flags, die das Verbindungsverhalten steuern.
  • BENUTZER - Der Benutzername auf dem entfernten Server. Ohne Angabe wird dein lokaler Benutzername verwendet.
  • HOST - Die IP-Adresse oder der Hostname des Zielservers.
  • BEFEHL - Optional: Ein Befehl, der auf dem Server ausgeführt wird.

Voraussetzungen für eine SSH-Verbindung

Bevor du dich mit einem Server verbinden kannst, müssen diese Bedingungen erfüllt sein:

  • Auf dem Zielserver läuft ein SSH-Server (meist OpenSSH).
  • Der SSH-Port (standardmäßig 22) ist in der Firewall geöffnet.
  • Du kennst den Benutzernamen und das Passwort oder hast einen SSH-Schlüssel eingerichtet.

Mit einem Server verbinden

Die einfachste Form der Verbindung verwendet nur den Hostnamen:

ssh server.example.com

Bei der ersten Verbindung zu einem neuen Server erscheint eine Sicherheitsabfrage:

The authenticity of host 'server.example.com (192.168.1.100)' can't be established.
ED25519 key fingerprint is SHA256:xR4jK9mN2pL5vQ8wE3tY6uI1oA7sD0fG2hJ4kL6zX8c.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Gib yes ein, um den Server-Fingerabdruck zu speichern. Dieser wird in ~/.ssh/known_hosts abgelegt und bei zukünftigen Verbindungen automatisch überprüft.

Als bestimmter Benutzer anmelden

Wenn dein lokaler Benutzername nicht mit dem auf dem Server übereinstimmt, gib den Benutzernamen mit an:

ssh admin@server.example.com

Alternativ funktioniert auch die Option -l:

ssh -l admin server.example.com

Einen anderen Port verwenden

Manche Server verwenden einen anderen Port als den Standard-Port 22. Mit der Option -p gibst du den Port an:

ssh -p 2222 admin@server.example.com

Einen Befehl direkt ausführen

Du kannst einen Befehl auf dem Server ausführen, ohne eine interaktive Shell zu starten. Nach der Ausführung wird die Verbindung automatisch beendet:

ssh admin@server.example.com "df -h"

Das ist praktisch für automatisierte Skripte oder schnelle Statusabfragen.

Die wichtigsten Optionen

OptionBeschreibung
-p PORTVerbindet zu einem anderen Port als 22
-l BENUTZERLegt den Benutzernamen fest
-i DATEIVerwendet eine bestimmte Schlüsseldatei
-vZeigt Debug-Ausgaben (für Fehlersuche)
-NÖffnet keine Shell (für Portweiterleitung)
-fWechselt nach der Authentifizierung in den Hintergrund
-LRichtet lokale Portweiterleitung ein
-RRichtet entfernte Portweiterleitung ein
-DErstellt einen SOCKS-Proxy

Authentifizierung mit SSH-Schlüsseln

Statt bei jeder Verbindung ein Passwort einzugeben, kannst du ein Schlüsselpaar verwenden. Das ist sicherer und bequemer.

Schlüsselpaar erzeugen

ssh-keygen -t ed25519 -C "dein@email.com"

Der Befehl erstellt zwei Dateien:

  • ~/.ssh/id_ed25519 - Der private Schlüssel (bleibt auf deinem Rechner)
  • ~/.ssh/id_ed25519.pub - Der öffentliche Schlüssel (wird auf Server kopiert)

Öffentlichen Schlüssel auf Server kopieren

ssh-copy-id admin@server.example.com

Nach der Eingabe deines Passworts wird der öffentliche Schlüssel in ~/.ssh/authorized_keys auf dem Server gespeichert. Ab sofort kannst du dich ohne Passwort anmelden.

Bestimmten Schlüssel verwenden

Wenn du mehrere Schlüssel hast, wähle mit -i den passenden aus:

ssh -i ~/.ssh/projekt_key admin@server.example.com

Die SSH-Konfigurationsdatei

Bei häufigen Verbindungen zu verschiedenen Servern spart eine Konfigurationsdatei Zeit. Erstelle oder bearbeite ~/.ssh/config:

Host webserver
    HostName server.example.com
    User admin
    Port 2222
    IdentityFile ~/.ssh/projekt_key

Host dbserver
    HostName 192.168.1.50
    User root

Jetzt reicht ein kurzer Befehl:

ssh webserver

Das entspricht dem ausführlichen Befehl ssh -p 2222 -i ~/.ssh/projekt_key admin@server.example.com.

Lokale Portweiterleitung

Mit lokaler Portweiterleitung leitest du einen Port auf deinem Rechner durch den SSH-Tunnel zu einem Ziel weiter. Das ist nützlich, um auf Dienste zuzugreifen, die nur intern erreichbar sind.

ssh -L 8080:localhost:80 admin@server.example.com

Dieser Befehl leitet deinen lokalen Port 8080 an Port 80 auf dem Server weiter. Öffne im Browser http://localhost:8080, um die Webseite des Servers zu sehen.

Du kannst auch auf andere Rechner im Netzwerk des Servers zugreifen:

ssh -L 3306:datenbank.intern:3306 admin@server.example.com

Entfernte Portweiterleitung

Entfernte Portweiterleitung funktioniert umgekehrt: Ein Port auf dem Server wird zu deinem lokalen Rechner weitergeleitet.

ssh -R 8080:localhost:3000 admin@server.example.com

Besucher von server.example.com:8080 erreichen damit den Dienst auf deinem lokalen Port 3000.

SOCKS-Proxy einrichten

Mit der Option -D erstellst du einen SOCKS-Proxy, über den du deinen gesamten Netzwerkverkehr tunneln kannst:

ssh -D 1080 -N admin@server.example.com

Konfiguriere deinen Browser oder andere Anwendungen so, dass sie localhost:1080 als SOCKS5-Proxy verwenden.

Verbindungsprobleme beheben

Bei Verbindungsproblemen hilft die Option -v für ausführliche Debug-Ausgaben:

ssh -v admin@server.example.com

Für noch mehr Details verwende -vv oder -vvv.

Häufige Probleme und Lösungen:

  • Connection refused: Der SSH-Server läuft nicht oder der Port ist blockiert.
  • Permission denied: Falsches Passwort oder fehlende Schlüsselberechtigung.
  • Host key verification failed: Der Server-Fingerabdruck hat sich geändert. Prüfe, ob das legitim ist, bevor du den alten Eintrag aus ~/.ssh/known_hosts entfernst.

Installation

Auf den meisten Distributionen ist der SSH-Client vorinstalliert. Falls nicht:

Debian/Ubuntu:

sudo apt install openssh-client

Fedora/RHEL:

sudo dnf install openssh-clients

macOS: Der SSH-Client ist standardmäßig installiert.

Zusammenfassung

Der ssh-Befehl ist das Standardwerkzeug für sichere Verbindungen zu entfernten Servern. Mit SSH-Schlüsseln wird die Authentifizierung sicherer und komfortabler. Die Konfigurationsdatei ~/.ssh/config vereinfacht die Verwaltung mehrerer Server. Portweiterleitung ermöglicht den Zugriff auf Dienste hinter Firewalls.

Verwandte Artikel