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.
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 Namenconfig
.- Beispiel:
~/.ssh/config
- Beispiel:
-
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 mitssh -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 den192.168.1.100
Server mit dem Benutzerubuntu
unter Verwendung des Ports2222
und des Schlüsselsid_ed25519_webserver
. -
devbox
: Ermöglicht den Zugriff auf den Serverdev.example.com
mit dem Benutzerdeveloper
unter Verwendung des Schlüsselsid_rsa_dev
und leitet den lokalen Port 8000 auf den Remote-Port 80 weiter. -
aws-*
: Einstellungen, die auf alle Aliase zutreffen, die mitaws-
beginnen. Wenn Sie zuaws-prod
oderaws-dev
verbinden, werden dieUser
undIdentityFile
Einstellungen automatisch angewendet. DerHostName
wird zuprod
, wenn Sie sich zuaws-prod
verbinden (später verwendet mit dem Befehlssh aws-prod
). -
10.0.0.*
: Bei Verbindungen zu IP-Adressen im Format10.0.0.x
werden automatisch der Benutzeradmin
und der Standardport22
angewendet.
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!
Es sind keine Kommentare vorhanden.