Nous avons un serveur de bastion que nous utilisons pour nous connecter à plusieurs hôtes, et notre .ssh / config a dépassé les mille lignes (nous avons des centaines d’hôtes auxquels nous nous connectons). Cela commence à devenir un peu difficile à manier et j'aimerais savoir s'il existe un moyen de diviser le fichier .ssh / config en plusieurs fichiers. Idéalement, nous spécifierions quelque part que d'autres fichiers seraient traités comme des fichiers .ssh / config, comme par exemple:
~/.ssh/config
~/.ssh/config_1
~/.ssh/config_2
~/.ssh/config_3
...
J'ai lu la documentation sur ssh / config et je ne vois pas cela possible. Mais peut-être que quelqu'un d'autre a eu un problème similaire et a trouvé une solution.
Réponses:
Le
~/.ssh/config
fichier n'a pas de directive pour l'inclusion d'autres fichiers, éventuellement liée à la vérification des autorisations de fichiers par SSH.Les suggestions autour de cela peuvent inclure un script permettant de filtrer plusieurs modifications ensemble, soit sur le système, soit via des hooks d’archivage sur un référentiel. On pourrait aussi se pencher sur des outils tels que Puppet ou Augeas.
Cependant, quelle que soit l'approche adoptée, vous devrez concaténer des fichiers individuels pour constituer un fichier unique situé en dehors du fichier.
note: écraser:
>
vs ajouter:>>
Mise à jour décembre 2017:
A partir de 7.3p1, il y a l'option Inclure. Ce qui vous permet d'inclure des fichiers de configuration.
la source
Vous pouvez spécifier le fichier de configuration actuel à utiliser dans l'option ssh comme ceci:
Semble que c'est le seul moyen.
De plus, il est maintenant possible d'inclure une configuration dans une autre.
la source
À partir de ssh 7.3 (publié le 1er août 2016), une
Include
directive est disponible.(Voici le lien vers le rapport de bogue résolu, qui inclut également le correctif: https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24 )
la source
config
fichier. Je ne peux pas comprendre pourquoi cela ne fonctionne pas au fond.Personnellement, j'utilise ces commandes pour compiler la configuration ssh:
ou:
parce que:
ne fonctionne pas pour moi, en revenant:
J'espère que cela vous aidera.
la source
ssh -F <(cat .ssh/*.config)
serait idéal. Je suis venu avec cela aussi, mais je reçois la même erreur. Quelqu'un sait quel est le problème ici?Je voudrais également utiliser
cat config_* > config
pour générer la configuration entière. Mais je n’utiliserais pas puppet / cfengine, etc. pour cela, s’ils ne sont pas encore en place (BTW: pourquoi ne pas utiliser un système de gestion de la configuration ???).Je générerais un paquet (deb, rpm) et le placerais dans un dépôt local. Et dans le script postinst, le chat génère votre configuration. Vous pouvez également inclure un dossier local ... L’avantage est que les mises à jour de ssh / config sont activées quotidiennement lorsque cron-apt & Co est exécuté.
la source
Vous pouvez utiliser un Makefile dans
~/.ssh
:Puis déplacez votre existant
config
versconfig.in
et lancezmake
pour générerconfig
.la source
J'ai joué avec le concept d'un
config.d
répertoire pour l'organisation de ma configuration. Donc, pour ajouter à la pile d'options ci-dessus, voici ce qui fonctionne pour moi.La structure du répertoire est quelque chose comme
La fonction qui construit ~ / .ssh / config et habite dans la commande run-config de mon shell est la suivante
Ajoutez éventuellement
sshMakeConfig
au bas de votre run-config si vous voulez assurer une nouvelle configuration sur chaque session shellChaque fois que j'ai besoin de recompiler mon ~ / .ssh / config, je le fais en exécutant
sshMakeConfig
une forme quelconque (directement, en achetant mon run-config ou en démarrant un nouveau shell)la source