Im letzten Beitrag haben wir die grundlegende Verwendung des ssh Befehls und nützliche Optionen betrachtet. Es ist jedoch sehr lästig, jedes Mal komplizierte IP-Adressen, Benutzernamen und Portnummern manuell eingeben zu müssen. In solchen Fällen kann die Verwendung einer SSH Config-Datei diesen Aufwand auf einmal lösen. Es ist eine magische Datei, die Ihnen hilft, häufige Serververbindungsinformationen wie Lesezeichen zu speichern und diese bequem über Aliase abzurufen.

Entwickler-Illustration, die SSH config wie ein Lesezeichen verwendet


Was ist die SSH Config-Datei?

Die SSH Config-Datei ist eine Konfigurationsdatei, die das Verhalten des SSH-Clients anpasst. Wenn Sie die Verbindungsinformationen (Benutzername, Port, Schlüsseldateipfad usw.) für bestimmte Hosts im Voraus speichern, dann können Sie später mit nur einem kurzen Alias darauf zugreifen.

  • Ort: Normalerweise befindet sie sich im .ssh Verzeichnis im Heimatverzeichnis des Benutzers unter dem Namen config.
    • Beispiel: ~/.ssh/config
  • Datei erstellen: Wenn die ~/.ssh/config Datei nicht existiert, können Sie sie einfach selbst erstellen.

    bash touch ~/.ssh/config chmod 600 ~/.ssh/config # Berechtigungen nur für den Besitzer festlegen aus Sicherheitsgründen


Regeln zum Erstellen der Konfigurationsdatei

Die Konfigurationsdatei ist eine einfache Textdatei, in der die Einstellungen für jeden Host mit dem Host Schlüsselwort beginnen und blockweise geschrieben werden.

Grundstruktur

Host [Alias]
    [Option1] [Wert1]
    [Option2] [Wert2]
    ...
  • Host [Alias]: Dies markiert den Beginn dieses Blocks und definiert den Alias, den Sie verwenden möchten. Sie können anstelle des Aliases auch die tatsächliche Host-Adresse (IP oder Domain) direkt eingeben. Wildcards (*, ?) können ebenfalls verwendet werden.

  • Einrückung: Die Optionen unter Host müssen einzurücken. Sie können Leerzeichen oder Tabulatoren verwenden, aber es ist ratsam, konsistent zu bleiben.

  • Optionen: Unter Host listen Sie die verschiedenen SSH-Optionen auf, die beim Verbindungsaufbau mit diesem Alias angewendet werden. Diese Optionen sind dieselben wie zuvor verwendet mit ssh -Option.

Häufig verwendete Optionen

Option Beschreibung Beispielwert
HostName IP-Adresse oder Domainname des Servers, mit dem Sie sich tatsächlich verbinden 192.168.1.100 oder example.com
User Benutzername des Kontos, um auf den Remote-Server zuzugreifen ubuntu, ec2-user, root
Port Portnummer des SSH-Servers (Standard ist 22) 2222
IdentityFile Pfad zur privaten Schlüsseldatei, die beim Zugriff verwendet wird ~/.ssh/id_ed25519_myserver
ForwardAgent SSH-Agent-Weiterleitung aktivieren (Agent Forwarding, wenn ssh-agent verwendet wird) yes
StrictHostKeyChecking Ob die Überprüfung des Hostschlüssels strikt durchgeführt werden soll (yes empfohlen) no (temporär für erste Tests verwendet)
PortForwarding Ob Portweiterleitung erlaubt ist yes
LocalForward Einrichtung der lokalen Portweiterleitung (-L Option entspricht) 8080 localhost:80
ServerAliveInterval Intervall zur Überprüfung, ob der Server noch lebt (in Sekunden) 60 (verhindert Verbindungsabbrüche)
ServerAliveCountMax Anzahl der Versuche, das Verbindungsaufrechtzuerhalten, bevor die Verbindung getrennt wird 3

Beispiele für das Erstellen von SSH Config-Dateien

Lassen Sie uns Konfigurationen für einige häufig verwendete Server in die ~/.ssh/config Datei hinzufügen.

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

# Zweiter Server: Entwicklungsserver (Alias: devbox)
Host devbox
    HostName dev.example.com
    User developer
    IdentityFile ~/.ssh/id_rsa_dev # Verwendung des RSA-Schlüssels
    # Lokalen Port 8000 auf Remote-Port 80 weiterleiten
    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 senden, um eine Trennung zu verhindern
    ServerAliveInterval 60
    ServerAliveCountMax 3

# Allgemeine Einstellungen für einen bestimmten IP-Bereich (Alias: 10.0.0.*)
Host 10.0.0.*
    User admin
    Port 22

Erklärung:

  • webserver: Ermöglicht den Zugriff auf den 192.168.1.100 Server mit dem Benutzer ubuntu unter Verwendung des Ports 2222 und des Schlüssels id_ed25519_webserver.

  • devbox: Ermöglicht den Zugriff auf den Server dev.example.com mit dem Benutzer developer unter Verwendung des Schlüssels id_rsa_dev und leitet den lokalen Port 8000 auf den Remote-Port 80 weiter.

  • aws-*: Einstellungen, die auf alle Aliase zutreffen, die mit aws- beginnen. Wenn Sie zu aws-prod oder aws-dev verbinden, werden die User und IdentityFile Einstellungen automatisch angewendet. Der HostName wird zu prod, wenn Sie sich zu aws-prod verbinden (später verwendet mit dem Befehl ssh aws-prod).

  • 10.0.0.*: Bei Verbindungen zu IP-Adressen im Format 10.0.0.x werden automatisch der Benutzer admin und der Standardport 22 angewendet.


Ein Bild, in dem der Zauber funktioniert, wenn die SSH-Verbindungstaste gedrückt wird

Wie man die Konfigurationsdatei verwendet

Nachdem Sie die Einstellungen in der Konfigurationsdatei gespeichert haben, wird die tatsächliche Verbindung viel einfacher. Lassen Sie uns das anhand der obigen Beispiele ausprobieren.

1. Über Alias verbinden

Führen Sie den SSH-Befehl nur mit dem Alias aus.

  • Verwendung des webserver Alias:
    ssh webserver
    Geben Sie das Passwort für den Schlüssel '/home/youruser/.ssh/id_ed25519_webserver' ein:
    ubuntu@webserver-ip:~ $
Dieser Befehl funktioniert intern wie `ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100`.
  • Verwendung des devbox Alias:
    ssh devbox
    Geben Sie das Passwort für den Schlüssel '/home/youruser/.ssh/id_rsa_dev' ein:
    developer@devbox-domain:~ $
(Wenn Sie sich gleichzeitig mit dem lokalen Port 8000 verbinden, wird eine Verbindung zum Port 80 von dev.example.com hergestellt)
  • Verwendung des aws-prod (Wildcard-Alias):
    ssh aws-prod
    Geben Sie das Passwort für den Schlüssel '/home/youruser/.ssh/aws_ec2_key.pem' ein:
    ec2-user@aws-prod-hostname:~ $

Hinweis: Bei Wildcard-Host wie aws-prod, wo der Hostname nicht explizit angegeben ist, müssen Sie entweder die HostName Option explizit angeben oder den Hostnamen in der Befehlszeile bereitstellen. Im vorherigen aws-* Beispiel wurde der HostName nicht festgelegt, sodass der SSH-Client versuchen wird, prod als Hostnamen zu interpretieren. Um es klarer zu gestalten, ist es üblich, etwas wie Host prod-server zu verwenden und HostName prod.example.com zuzuordnen.


Vorteile der Verwendung der Konfigurationsdatei

  • Bequemlichkeit: Sie können lange und komplexe SSH-Befehle durch kurze Aliase ersetzen, um Eingabefehler zu reduzieren und Zeit zu sparen.
  • Produktivität: Sie können schnell zwischen häufig verwendeten Servern wechseln, was die Arbeitseffizienz erhöht.
  • Einfachere Verwaltung: Alle verbindungsbezogenen Einstellungen können an einem Ort verwaltet werden, was die Wartung erleichtert. Wenn sich beispielsweise die IP-Adresse eines Servers ändert, müssen Sie nur die Config-Datei ändern.
  • Sicherheit: Wichtige Informationen (z.B. Pfad zur Schlüsseldatei) müssen nicht im Befehlsverlauf gespeichert werden.

Fazit

Die SSH Config-Datei ist ein unverzichtbares Werkzeug für alle Entwickler und Systemadministratoren, die SSH verwenden. Mit dieser Datei können Sie Ihre SSH-Zugriffserfahrung wesentlich einfacher und effizienter gestalten. Öffnen Sie die ~/.ssh/config Datei und erstellen Sie Ihre eigenen Aliase!

Lesen Sie auch andere Beiträge, die mit SSH zu tun haben! Wenn Sie im Suchfeld auf der rechten Seite nach 'ssh' suchen, finden Sie viele Artikel zu SSH.

Wenn Sie Fragen haben, können Sie jederzeit einen Kommentar hinterlassen!