SSH vereinfachen mit der ~/.ssh/config-Datei

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?

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/config
Host server
    HostName 192.168.1.50
    User tobias
    Port 2222
    IdentityFile ~/.ssh/id_server

Ab jetzt genügt ein kurzer Befehl – SSH ergänzt Benutzer, Port und Schlüssel automatisch:

ssh server

Den passenden Schlüssel erzeugst und hinterlegst du wie in SSH-Key hinterlegen beschrieben.


Die wichtigsten Optionen

OptionBedeutung
HostDer Kurzname, den du beim Verbinden nutzt
HostNameDie echte Adresse oder IP des Servers
UserDer Benutzername für den Login
PortDer SSH-Port (falls abweichend von 22)
IdentityFileDer 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 server

Nü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.

OptionZweck
ServerAliveInterval 60Verhindert Timeout durch Keepalive-Pakete
Compression yesSpart Bandbreite bei langsamer Leitung
ControlMaster autoMultiplexing mehrerer Sitzungen
ControlPersist 10mHält den Master-Kanal offen
ForwardAgent yesReicht 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/config und 700 für ~/.ssh
  • Keys statt Passwörter: pro Host ein IdentityFile und IdentitiesOnly yes
  • Agent-Forwarding sparsam: nur für vertrauenswürdige Hosts aktivieren
  • Host-Keys prüfen: StrictHostKeyChecking nicht 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.

Siehe auch  Bestes Dateisystem für Unraid: XFS, Btrfs & ZFS im Vergleich
Nach oben scrollen