In meinem letzten Beitrag habe ich die Grundlagen des ssh-Befehls und nützliche Optionen erläutert. Doch jedes Mal die komplexen IP‑Adressen, Benutzernamen und Portnummern manuell einzugeben, ist wirklich lästig.

Hier kommt die SSH‑Config‑Datei ins Spiel – sie löst all diese Mühen auf einmal. Ähnlich wie ein Lesezeichen speichert sie häufig genutzte Serververbindungen und ermöglicht den Zugriff über einen einfachen Alias.

Ich selbst war in der Anfangsphase, als ich die Existenz der Config-Datei nicht kannte, und habe oft die komplette Befehlszeile in meine .bashrc als Alias eingefügt. Erst als ich die Config-Datei erstellte, wurde mir bewusst, wie simpel und effizient die Lösung ist.

Ich staune über die SSH‑Config


Was ist die SSH‑Config‑Datei?

Die SSH‑Config‑Datei ist eine Konfigurationsdatei, die das Verhalten des SSH‑Clients definiert. Wenn Sie Verbindungsinformationen (Benutzername, Port, Schlüsseldatei usw.) für einen bestimmten Host vorab speichern, können Sie später nur noch einen kurzen Alias verwenden.

  • Ort: Normalerweise befindet sich die Datei im .ssh‑Verzeichnis Ihres Home‑Verzeichnisses als config. Wenn Sie SSH gerade erst installiert haben, existiert sie möglicherweise nicht – dann müssen Sie sie erstellen.
  • Datei erstellen: Falls ~/.ssh/config nicht existiert, können Sie sie einfach anlegen. Setzen Sie die Berechtigungen unbedingt auf 600.
    touch ~/.ssh/config
    chmod 600 ~/.ssh/config  # Sicherheit: Berechtigungen sind Pflicht!

Regeln zum Schreiben der Config‑Datei

Die Config‑Datei ist eine einfache Textdatei, in der jede Host‑Konfiguration mit dem Schlüsselwort Host beginnt und in einem Block geschrieben wird.

Grundstruktur

Host [Alias]
    [Option1] [Wert1]
    [Option2] [Wert2]
    ...
  • Host [Alias]: Kennzeichnet den Beginn eines Blocks und definiert den Alias, den Sie später in ssh verwenden. Statt eines Alias können Sie auch die tatsächliche Hostadresse (IP oder Domain) angeben. Wildcards (*, ?) sind ebenfalls möglich.
  • Einrückung: Die Optionen unter Host müssen eingerückt werden. Leerzeichen oder Tabs sind erlaubt, aber Konsistenz ist empfehlenswert.
  • Optionen: Unter Host listen Sie die SSH‑Optionen auf, die bei der Verbindung mit diesem Alias gelten. Diese Optionen entsprechen denen, die Sie zuvor mit ssh -Option verwendet haben.

Häufig verwendete Optionen

Option Beschreibung Beispielwert
HostName Die IP‑Adresse oder Domain des Zielservers 192.168.1.100 oder example.com
User Der Benutzername auf dem Remote‑Server ubuntu, ec2-user, root
Port Der SSH‑Port des Remote‑Servers (Standard 22) 2222
IdentityFile Pfad zur privaten Schlüsseldatei ~/.ssh/id_ed25519_myserver
ForwardAgent SSH‑Agent‑Weiterleitung aktivieren yes
StrictHostKeyChecking Strenge Host‑Key‑Prüfung (yes empfohlen) no (nur für erste Tests)
PortForwarding Port‑Weiterleitung erlauben yes
LocalForward Lokale Port‑Weiterleitung (-L‑Option) 8080 localhost:80
ServerAliveInterval Intervall zur Überprüfung, ob der Server aktiv ist (Sekunden) 60
ServerAliveCountMax Anzahl der fehlgeschlagenen Versuche vor Trennung 3

Beispiel für das Schreiben einer SSH‑Config

Fügen wir einige häufig genutzte Server in die Datei ~/.ssh/config ein.

# Erster Server: Webserver (Alias: webserver)
Host webserver
    HostName 192.168.1.100
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_webserver  # spezieller Schlüssel für den Webserver

# Zweiter Server: Entwicklungsserver (Alias: devbox)
Host devbox
    HostName dev.example.com
    User developer
    IdentityFile ~/.ssh/id_rsa_dev  # RSA‑Schlüssel
    # Lokale Port‑Weiterleitung: 8000 → Remote 80
    LocalForward 8000 localhost:80 

# Dritter Server: Alle AWS‑EC2‑Server (Alias: aws-*)
Host aws-*
    User ec2-user
    IdentityFile ~/.ssh/aws_ec2_key.pem
    # Regelmäßige Signale, um die Verbindung aktiv zu halten
    ServerAliveInterval 60
    ServerAliveCountMax 3

# Allgemeine Einstellungen für ein bestimmtes IP‑Subnetz (Alias: 10.0.0.*)
Host 10.0.0.*
    User admin
    Port 22

Erklärung:

  • webserver: Verbinden Sie sich mit 192.168.1.100 als ubuntu über Port 2222 und den Schlüssel id_ed25519_webserver.
  • devbox: Verbinden Sie sich mit dev.example.com als developer über den Schlüssel id_rsa_dev und leiten Sie lokal Port 8000 an Remote Port 80 weiter.
  • aws-*: Für alle Aliase, die mit aws- beginnen, gelten die gleichen Einstellungen. Wenn Sie z. B. ssh aws-prod ausführen, wird automatisch ec2-user und der entsprechende Schlüssel verwendet.
  • 10.0.0.*: Für jede IP im Subnetz 10.0.0.x wird admin als Benutzer und Port 22 verwendet.

In der Praxis nutze ich selten Wildcards wie *. Stattdessen erstelle ich für jeden Server einen eigenen Eintrag – das macht die Verwaltung übersichtlich. Wenn ich denselben Server mit unterschiedlichen Einstellungen erreichen muss, füge ich einfach einen weiteren Alias hinzu, ähnlich wie man in einem Restaurant verschiedene Gerichte auswählt.


Der Moment, wenn Sie auf den SSH‑Button klicken und die Magie des Netzwerks entfaltet

Verwendung der Config‑Datei

Sobald Sie die Konfiguration gespeichert haben, wird die Verbindung deutlich einfacher. Probieren wir es anhand des obigen Beispiels aus.

1. Verbindung über einen Alias herstellen

Führen Sie einfach den Alias in ssh aus.

  • Alias webserver verwenden:
    ssh webserver
    Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
    ubuntu@webserver-ip:~ $

Dieser Befehl ist intern gleichbedeutend mit ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100.

  • Alias devbox verwenden:
    ssh devbox
    Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
    developer@devbox-domain:~ $

(Wenn Sie gleichzeitig Port 8000 lokal öffnen, wird der Traffic an Remote Port 80 weitergeleitet.)


Vorteile der Config‑Datei

  • Bequemlichkeit: Lange, komplexe Befehle werden durch kurze Aliase ersetzt, was Tippfehler reduziert und Zeit spart.
  • Produktivität: Häufig genutzte Server können schnell gewechselt werden, was die Arbeitsgeschwindigkeit erhöht.
  • Einfaches Management: Alle Verbindungsdetails sind an einem Ort. Wenn sich z. B. die IP eines Servers ändert, reicht ein Update in der Config‑Datei.
  • Sicherheit: Wichtige Informationen wie Schlüsselpfade erscheinen nicht in der Befehls‑Historie.

Fazit

Die SSH‑Config‑Datei ist ein unverzichtbares Werkzeug für jeden Entwickler und Systemadministrator, der SSH nutzt. Nutzen Sie sie, um Ihre SSH‑Erfahrung zu vereinfachen und effizienter zu gestalten. Öffnen Sie ~/.ssh/config, erstellen Sie Ihre eigenen Aliase und genießen Sie die Vorteile!

Weitere Artikel rund um SSH finden Sie ebenfalls – suchen Sie im rechten Suchfeld nach ssh.

Bei Fragen stehen wir Ihnen gerne in den Kommentaren zur Verfügung!