Lösung 1:
Der ~/.ssh/config
file hat keine Anweisung zum Einschließen anderer Dateien, möglicherweise im Zusammenhang mit der SSH-Prüfung auf Dateiberechtigungen.
Vorschläge dazu können ein Skript enthalten, um mehrere Änderungen entweder auf dem System oder über Eincheck-Hooks in einem Repository zusammenzufassen. Man könnte sich auch Tools wie Puppet oder Augias ansehen.
Wie auch immer Sie es angehen, Sie müssen einzelne Dateien von außerhalb der Datei zu einer einzigen Datei verketten.
$ cat ~/.ssh/config_* >> ~/.ssh/config
Hinweis: überschreiben:>
gegenüber anhängen:>>
Aktualisierung Dezember 2017:
Ab 7.3p1 gibt es die Option Include. Damit können Sie Konfigurationsdateien einschließen.
Include
Include the specified configuration file(s). Mul‐
tiple pathnames may be specified and each pathname
may contain glob(3) wildcards and, for user config‐
urations, shell-like “~” references to user home
directories. Files without absolute paths are
assumed to be in ~/.ssh if included in a user con‐
figuration file or /etc/ssh if included from the
system configuration file. Include directive may
appear inside a Match or Host block to perform con‐
ditional inclusion.
Lösung 2:
Sie können die aktuelle Konfigurationsdatei angeben, die in der ssh-Option wie folgt verwendet werden soll:
ssh -F /path/to/configfile
Scheint die einzige Möglichkeit zu sein.
Außerdem gibt es keine Möglichkeit, eine Konfiguration in eine andere einzufügen.
Lösung 3:
Beginnend mit ssh 7.3 (veröffentlicht am 1. August 2016), ein Include
Direktive ist verfügbar.
Einschließen :Die angegebene(n) Konfigurationsdatei(en) einschließen. Es können mehrere Pfadnamen angegeben werden, und jeder Pfadname kann globwildcards und Shell-ähnliche „~“-Verweise auf Benutzer-Home-Verzeichnisse enthalten. Dateien ohne absolute Pfade werden in ~/.ssh
angenommen . AnInclude
Direktive kann innerhalb eines Match
erscheinen oder Host
blockieren, um die bedingte Inklusion auszuführen.
(Hier ist der Link zum behobenen Fehlerbericht, der auch den Patch enthält:https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24)
Lösung 4:
Ich persönlich benutze diese Befehle, um die ssh-Konfiguration zu kompilieren:
alias compile-ssh-config='echo -n > ~/.ssh/config && cat ~/.ssh/*.config > ~/.ssh/config'
alias ssh='compile-ssh-config && ssh'
# (This will get used by other programs depending on the ~/.ssh/config)
# (If you need you can run the compile-ssh-config command via cron etc.)
oder:
alias compile-ssh-config='echo -n > ~/.ssh/config-compilation && cat ~/.ssh/*.config > ~/.ssh/config-compilation'
alias ssh='compile-ssh-config && ssh -F ~/.ssh/config-compilation'
# (This is saver and won't over write an existing ~/.ssh/config file)
weil:
alias ssh='ssh -F <(cat .ssh/*.config)'
funktioniert bei mir nicht, Rückgabe:
ssh: Can't open user config file /dev/fd/63: Bad file descriptor
Ich hoffe, dies wird Ihnen helfen.
Lösung 5:
Ich würde auch cat config_* > config
verwenden um die gesamte Konfiguration zu generieren. Aber ich würde Puppet/cfengine etc dafür nicht verwenden, wenn sie noch nicht vorhanden sind (Übrigens:warum nicht ein Konfigurationsverwaltungssystem verwenden???).
Ich würde ein Paket (deb, rpm) generieren und es in einem lokalen Repository ablegen. Und im Postinst-Skript generiert die Katze Ihre Konfiguration. Vielleicht binden Sie auch einen lokalen Ordner ein... Der Vorteil ist, dass ssh/config Updates täglich aktiviert werden, während cron-apt &Co laufen.