Modulare SSH Konfiguration

Veröffentlicht von cmuench am

Ich nutze schon seit vielen Jahren sehr gerne einen SSH Client über die Kommandozeile. Sehr praktisch ist hier, dass man diesen über eine .ssh/config Datei noch komfortabler gestalten kann. In dieser Datei trage ich gerne Tunnel-Konfigurationen, Schlüsselzuordnungen, Benutzernamen, Ports, Proxy-Kommandos und andere Dinge ein.
Was genau alles konfiguriert werden kann lässt sich über die Manpage schnell einsehen.

man ssh_config

Da ich in der SSH-Config Datei sämtliche Systeme (Kundensysteme wie eigene) verwalte ist diese über die Jahre doch relativ schnell angewachsen und etwas unübersichtlich geworden. Leider gibt es kein „Include“ Anweisung die unterstützt wäre. Es tummelten sich in der Datei schnell alte Server die ich nicht mehr benötigte. Daher habe ich nach einer einfachen Lösung zur Verwaltung der Datei gesucht. Das super einfache Setup will ich jetzt hier schnell vorstellen.

Die Grundidee ist, dass ich die Konfiguration in einzelne Dateien zerteile. Die Dateien haben dann immer den Namen des Kunden für dessen System ich Einträge anlege. Die Dateien lege ich dann in ein Unterverzeichnis ~/.ssh/conf.d.

Beispiel:

.ssh
├── conf.d
│   ├── __default.conf
│   ├── customer1.conf
│   ├── customer2.conf
│   ├── customer3.conf
│   └── private.conf
├── config
├── id_rsa
└── id_rsa.pub

Bei mir sind das insgesamt 44 Dateien. Also schon eine ganze Menge.
Jetzt muss nur noch die Datei ~/.ssh/config erzeugt werden.

Zur Generierung der Datei habe ich ein kleines Script geschrieben:

#!/bin/sh
rm ~/.ssh/config

# cat with an empty line after each file
awk 'FNR==1{print ""}{print}' conf.d/*.conf > ~/.ssh/config

Am Ende erhaltet ihr eine schöne sortierte SSH Konfigurationsdatei.

Kategorien: Linux

4 Kommentare

Alexander Menk · 30. Juli 2017 um 16:29

In OpenSSH 7.3 scheint eine include direktive von Haus aus dabei zu sein und dieser workaround nicht mehr nötig zu sein (ab Ubuntu 16.10) – habs noch nicht getestet
https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24

    Christian Münch · 30. Juli 2017 um 16:49

    Danke. Das probiere ich mal aus. Ich will allerdings ein Setup für den Mac und Linux. Mal sehen ob das auf dem Mac funktioniert.

    Christian Münch · 31. Juli 2017 um 09:23

    I tested it on my mac and it didn’t work for me. In the manpage I can see the „Include“ statement. Maybe it was wrongly configured.

Alexander Menk · 30. Juli 2017 um 16:31

https://superuser.com/a/1142813/38752

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.