Tippst du bei jedem Login lange Befehle wie ssh -p 2222 [email protected] -i ~/.ssh/id_server? Das geht einfacher. Mit der SSH-config-Datei hinterlegst du deine Server einmal und verbindest dich dann mit einem kurzen Namen. In dieser Anleitung richtest du ~/.ssh/config ein und lernst die wichtigsten Optionen.
Die SSH-config-Datei unter ~/.ssh/config ist einer der größten Produktivitäts-Booster für alle, die regelmäßig mit mehreren Servern arbeiten. Statt dir Ports, Benutzernamen, IP-Adressen und Schlüsselpfade zu merken, definierst du übersichtliche Profile und verbindest dich mit einem kurzen Alias. In diesem Artikel schaust du dir nach den Grundlagen auch fortgeschrittene Optionen, Sicherheitsaspekte und die Fehlersuche an.
- Was ist die SSH-config?
- Ein erstes Profil anlegen
- Die wichtigsten Optionen
- Mehrere Server und Platzhalter
- Über einen Sprungserver verbinden (ProxyJump)
- Nützliche Optionen für stabile und schnelle Verbindungen
- Sicherheit: Was in die config gehört – und was nicht
- Häufige Fehler und Fehlersuche
- Häufige Fragen
- Gilt die config auch für scp, rsync und git?
- Spielt die Reihenfolge der Host-Einträge eine Rolle?
- Wie setze ich globale Standardwerte für alle Server?
- Fazit
Was ist die SSH-config?
Die Datei ~/.ssh/config auf deinem lokalen Rechner speichert Verbindungsprofile. Statt alle Parameter im Befehl anzugeben, definierst du sie einmal pro Server. Das spart Tipparbeit und macht komplexe Zugänge übersichtlich.
Ein erstes Profil anlegen
Erstelle oder öffne die Datei und lege einen Eintrag an:
nano ~/.ssh/configHost server
HostName 192.168.1.50
User tobias
Port 2222
IdentityFile ~/.ssh/id_serverAb jetzt genügt ein kurzer Befehl – SSH ergänzt Benutzer, Port und Schlüssel automatisch:
ssh serverDen passenden Schlüssel erzeugst und hinterlegst du wie in SSH-Key hinterlegen beschrieben.
Die wichtigsten Optionen
| Option | Bedeutung |
|---|---|
Host | Der Kurzname, den du beim Verbinden nutzt |
HostName | Die echte Adresse oder IP des Servers |
User | Der Benutzername für den Login |
Port | Der SSH-Port (falls abweichend von 22) |
IdentityFile | Der zu verwendende private Schlüssel |
Mehrere Server und Platzhalter
Du kannst beliebig viele Host-Blöcke anlegen. Gemeinsame Einstellungen fasst du über einen Platzhalter zusammen. Dieser Block gilt für alle Verbindungen:
Host *
ServerAliveInterval 60
AddKeysToAgent yesÜber einen Sprungserver verbinden (ProxyJump)
Ist ein Server nur über einen anderen erreichbar, erledigt ProxyJump das automatisch – kein manuelles Durchhangeln mehr:
Host intern
HostName 10.0.0.10
User tobias
ProxyJump serverNützliche Optionen für stabile und schnelle Verbindungen
Neben den Basics gibt es einige Optionen, die deinen Alltag spürbar angenehmer machen. Besonders praktisch ist das Verbindungs-Multiplexing: Damit wird für mehrere Sitzungen zum selben Host nur ein einziger TCP-Kanal aufgebaut, was neue Verbindungen fast verzögerungsfrei öffnet. In Kombination mit ServerAliveInterval bleibt deine Sitzung auch bei kurzer Inaktivität bestehen.
| Option | Zweck |
|---|---|
ServerAliveInterval 60 | Verhindert Timeout durch Keepalive-Pakete |
Compression yes | Spart Bandbreite bei langsamer Leitung |
ControlMaster auto | Multiplexing mehrerer Sitzungen |
ControlPersist 10m | Hält den Master-Kanal offen |
ForwardAgent yes | Reicht den SSH-Agent weiter (mit Bedacht) |
Für das Multiplexing ergänzt du zusätzlich einen Pfad für den Socket, etwa ControlPath ~/.ssh/sockets/%r@%h:%p. Lege das Verzeichnis vorher mit mkdir -p ~/.ssh/sockets an.
Ein weiterer Alltagshelfer sind Platzhalter in Verbindung mit ProxyJump und RemoteCommand. Musst du dich zum Beispiel immer über denselben Sprungserver zu einer ganzen Serverfamilie verbinden, definierst du den Jump-Host einmal und referenzierst ihn per ProxyJump bastion in allen betroffenen Blöcken. Die Token %h (Hostname), %p (Port) und %r (Remote-User) machen deine Einträge dabei generisch, sodass ein einziger Block mit Host *.intern für dutzende Server ausreicht.
Sicherheit: Was in die config gehört – und was nicht
Die config-Datei selbst enthält keine Passwörter, trotzdem lohnt ein sicherheitsbewusster Umgang. Setze die Dateirechte mit chmod 600 ~/.ssh/config, damit kein anderer Nutzer deine Serverliste einsehen kann. Verzichte darauf, StrictHostKeyChecking no global zu setzen – das öffnet Tür und Tor für Man-in-the-Middle-Angriffe. Nutze stattdessen konsequent Schlüssel statt Passwörter und verweise per IdentityFile gezielt auf den passenden Key.
- Rechte setzen:
chmod 600 ~/.ssh/configund700für~/.ssh - Keys statt Passwörter: pro Host ein
IdentityFileundIdentitiesOnly yes - Agent-Forwarding sparsam: nur für vertrauenswürdige Hosts aktivieren
- Host-Keys prüfen:
StrictHostKeyCheckingnicht deaktivieren
Wie du deinen Schlüssel korrekt auf dem Server ablegst, zeigt dir die Anleitung zum SSH-Key hinterlegen.
Häufige Fehler und Fehlersuche
Funktioniert eine Verbindung nicht wie erwartet, hilft der ausführliche Modus: Mit ssh -v deinserver siehst du genau, welche config-Zeilen geladen und welcher Schlüssel angeboten wird. Ein häufiger Stolperstein sind zu offene Dateirechte – SSH ignoriert dann still deinen Schlüssel. Auch die Reihenfolge der Blöcke ist wichtig: Bei mehreren passenden Host-Einträgen gewinnt für jede Option der erste Treffer von oben.
Reicht dir -v nicht aus, steigern -vv und -vvv die Detailtiefe weiter, bis hin zum vollständigen Aushandeln der Verschlüsselung. Willst du prüfen, welche Werte SSH für einen bestimmten Host tatsächlich zusammensetzt, ohne dich zu verbinden, nutzt du ssh -G deinserver. Der Befehl gibt die komplette, aufgelöste Konfiguration aus – ideal, um Tippfehler oder überschriebene Optionen aufzuspüren, bevor du dich mit deinem abgesicherten Server verbindest.
Häufige Fragen
Gilt die config auch für scp, rsync und git?
Ja. Alle Tools, die intern OpenSSH nutzen – darunter scp, sftp, rsync und git über SSH – lesen dieselbe ~/.ssh/config. Du kannst also nach dem Anlegen eines Profils direkt rsync -av daten/ meinserver:/backup/ nutzen.
Spielt die Reihenfolge der Host-Einträge eine Rolle?
Ja, und zwar entscheidend. SSH wertet die Datei von oben nach unten aus und übernimmt für jede Option den ersten passenden Wert. Spezifische Hosts gehören daher nach oben, allgemeine Muster wie Host * ans Ende der Datei.
Wie setze ich globale Standardwerte für alle Server?
Nutze am Ende der Datei einen Block Host *. Optionen dort greifen für alle Verbindungen, sofern sie nicht vorher schon durch einen spezifischeren Host-Eintrag gesetzt wurden – ideal für ServerAliveInterval oder Compression.
Fazit
Die ~/.ssh/config macht aus kryptischen Befehlen kurze, merkbare Namen – und mit ProxyJump werden selbst verschachtelte Zugänge zum Einzeiler. Einmal eingerichtet, willst du nie wieder darauf verzichten. Wie du die Gegenstelle absicherst, zeigt SSH-Server absichern.

