Die SSH-Konfigurationsdatei speichert Verbindungseinstellungen für Remote-Server. Statt lange Befehle mit Benutzernamen, Hostnamen und Ports einzutippen, verbindest du dich mit einem kurzen Alias.
Speicherort und Einrichtung
Die Konfigurationsdatei liegt unter ~/.ssh/config. Falls das Verzeichnis ~/.ssh noch nicht existiert, erstelle es:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Erstelle dann die Konfigurationsdatei:
touch ~/.ssh/config
chmod 600 ~/.ssh/config
Die Berechtigungen sind wichtig: Die Datei darf nur für den Besitzer lesbar und schreibbar sein. SSH verweigert sonst die Nutzung.
Grundstruktur
Die Datei besteht aus Host-Blöcken. Jeder Block beginnt mit Host und enthält die Verbindungsoptionen:
Host server1
HostName 192.168.1.10
User admin
Port 22
Host server2
HostName example.com
User deploy
Port 2222
Host *
Compression yes
Die Einrückung ist optional, macht die Datei aber übersichtlicher.
Praktisches Beispiel
Ohne Konfigurationsdatei sieht eine Verbindung so aus:
ssh john@dev.example.com -p 2322
Mit diesem Eintrag in ~/.ssh/config:
Host dev
HostName dev.example.com
User john
Port 2322
Reicht künftig:
ssh dev
Der SSH-Client liest die Konfiguration und setzt alle Optionen automatisch.
Wichtige Optionen
| Option | Beschreibung |
|---|---|
HostName | IP-Adresse oder Domain des Servers |
User | Benutzername für die Verbindung |
Port | SSH-Port (Standard: 22) |
IdentityFile | Pfad zum privaten SSH-Schlüssel |
Compression | Aktiviert Komprimierung (yes/no) |
LogLevel | Detailgrad der Protokollierung |
Muster und Wildcards
Die Host-Direktive unterstützt Muster:
*passt auf beliebig viele Zeichen.Host *gilt für alle Verbindungen.?passt auf genau ein Zeichen.Host server?passt aufserver1,server2, usw.!negiert ein Muster.Host * !productiongilt für alle Hosts außerproduction.
Reihenfolge der Optionen
SSH verarbeitet die Blöcke von oben nach unten. Bei mehreren Treffern gewinnt der erste Wert. Platziere daher spezifische Einträge oben und allgemeine Einstellungen unten:
Host production
HostName prod.example.com
User deploy
IdentityFile ~/.ssh/prod_key
Host staging
HostName staging.example.com
User deploy
Host *
User root
Compression yes
ServerAliveInterval 60
Bei ssh production wird User deploy verwendet, nicht User root aus dem *-Block.
Optionen überschreiben
Kommandozeilenoptionen haben Vorrang vor der Konfigurationsdatei. Um dich als anderer Benutzer zu verbinden:
ssh -o "User=root" dev
Um die Konfigurationsdatei komplett zu ignorieren:
ssh -F /dev/null user@example.com
Mit -F gibst du eine alternative Konfigurationsdatei an:
ssh -F ~/.ssh/config_backup dev
Rangfolge der Konfiguration
SSH liest Einstellungen in dieser Reihenfolge:
- Kommandozeilenoptionen
- Benutzerkonfiguration (
~/.ssh/config) - Systemweite Konfiguration (
/etc/ssh/ssh_config)
Der erste gefundene Wert gilt.
Nutzung mit anderen Programmen
Die SSH-Konfigurationsdatei wird auch von scp, sftp und rsync gelesen. Ein definierter Host funktioniert mit allen:
scp datei.txt dev:/home/john/
sftp dev
rsync -avz ./projekt/ dev:/var/www/
Zusammenfassung
Die SSH-Konfigurationsdatei unter ~/.ssh/config speichert Verbindungseinstellungen für Remote-Server. Du definierst Host-Aliase mit allen nötigen Optionen und verbindest dich mit einem kurzen Befehl. Wildcards ermöglichen Standardeinstellungen für mehrere oder alle Hosts. Die vollständige Liste aller Optionen findest du in der Manpage:
man ssh_config