Wir haben einen Bastion-Server, mit dem wir eine Verbindung zu mehreren Hosts herstellen, und unsere .ssh / config ist auf über tausend Zeilen angewachsen (wir haben Hunderte von Hosts, mit denen wir eine Verbindung herstellen). Dies wird langsam unhandlich und ich würde gerne wissen, ob es eine Möglichkeit gibt, die .ssh / config-Datei in mehrere Dateien aufzuteilen. Im Idealfall geben wir irgendwo an, dass andere Dateien als .ssh / config-Datei behandelt werden sollen, möglicherweise wie folgt:
~/.ssh/config
~/.ssh/config_1
~/.ssh/config_2
~/.ssh/config_3
...
Ich habe die Dokumentation zu ssh / config gelesen und sehe nicht, dass dies möglich ist. Aber vielleicht hat jemand anderes ein ähnliches Problem gehabt und eine Lösung gefunden.
Antworten:
Die
~/.ssh/config
Datei enthält keine Direktive zum Einschließen anderer Dateien, möglicherweise im Zusammenhang mit der Überprüfung von SSH auf Dateiberechtigungen.Vorschläge dazu können ein Skript enthalten, um mehrere Änderungen gemeinsam entweder auf dem System oder über Check-in-Hooks in einem Repository vorzunehmen. Man könnte sich auch Tools wie Puppet oder Augeas ansehen.
Wie auch immer Sie vorgehen, Sie müssen einzelne Dateien verketten, um eine einzelne Datei von außerhalb der Datei zu erhalten.
hinweis: überschreiben:
>
vs anhängen:>>
Update Dezember 2017:
Ab 7.3p1 gibt es die Option Einschließen. Womit Sie Konfigurationsdateien einbinden können.
quelle
Sie können die aktuelle Konfigurationsdatei für die Verwendung in der Option ssh wie folgt angeben:
Scheint, es ist der einzige Weg.
Außerdem gibt es heutzutage die Möglichkeit, eine Konfiguration in eine andere aufzunehmen.
quelle
Ab ssh 7.3 (veröffentlicht am 1. August 2016) ist eine
Include
Direktive verfügbar.(Hier ist der Link zum behobenen Fehlerbericht, der auch den Patch enthält: https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24 )
quelle
config
Datei ein. Ich kann nicht herausfinden, warum es unten nicht funktioniert.Ich persönlich benutze diese Befehle, um die ssh-Konfiguration zu kompilieren:
oder:
da:
funktioniert bei mir nicht und kehrt zurück:
Ich hoffe, das wird Ihnen weiterhelfen.
quelle
ssh -F <(cat .ssh/*.config)
wäre ideal. Ich habe mir das auch ausgedacht, aber ich bekomme den gleichen Fehler. Weiß jemand, wo das Problem liegt?Ich würde auch verwenden
cat config_* > config
, um die gesamte Konfiguration zu generieren. Aber ich würde dafür kein Puppet / Cfengine usw. verwenden, wenn sie noch nicht vorhanden sind.Ich würde ein Paket (deb, rpm) generieren und es in ein lokales Repository stellen. Und im Postinst-Skript generiert die Katze Ihre Konfiguration. Vielleicht fügen Sie auch einen lokalen Ordner hinzu ... Der Vorteil ist, dass ssh / config updates täglich aktiviert werden, während cron-apt & Co ausgeführt wird.
quelle
Sie könnten ein Makefile verwenden in
~/.ssh
:Bewegen Sie dann Ihr vorhandenes
config
zuconfig.in
und führen Sie es ausmake
, um es zu generierenconfig
.quelle
Ich habe mit dem Konzept eines
config.d
Verzeichnisses für meine Konfigurationsorganisation gespielt. Um den oben genannten Haufen von Optionen zu ergänzen, hier ist, was für mich gearbeitet hat.Die Verzeichnisstruktur ist ungefähr so
Die Funktion, die die ~ / .ssh / config erstellt und in der run-config meiner Shell lebt, ist wie folgt
Fügen Sie optional
sshMakeConfig
am Ende Ihrer Run-Config hinzu, wenn Sie bei jeder Shell-Sitzung eine neue Konfiguration sicherstellen möchtenJedes Mal, wenn ich meine ~ / .ssh / config neu kompilieren muss, führe ich dies
sshMakeConfig
in irgendeiner Form aus (direkt, über meine run-config oder durch Starten einer neuen Shell).quelle