103 votes

Pouvez-vous avoir plus d'un fichier ~/.ssh/config ?

Nous avons un serveur bastion que nous utilisons pour nous connecter à plusieurs hôtes, et notre fichier .ssh/config a atteint plus de mille lignes (nous nous connectons à des centaines d'hôtes). Cela commence à devenir un peu lourd et j'aimerais savoir s'il existe un moyen de diviser le fichier .ssh/config en plusieurs fichiers. L'idéal serait de spécifier quelque part que d'autres fichiers doivent être traités comme un fichier .ssh/config, 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 comment cela est possible. Mais peut-être que quelqu'un d'autre a eu un problème similaire et a trouvé une solution.

2voto

user3073309 Points 11

Vous devez utiliser l'option Include au-dessus de toutes les balises Host dans le fichier ~/.ssh/config. Sinon, ssh ne résoudra pas vos inclusions.

Inclure ~/.ssh/config-*

Tunnel d'accueil Nom d'hôte database.example.com ....

0voto

GmNoob Points 1435

Vous pouvez utiliser un Makefile dans ~/.ssh :

    config: config.in config.app.in
        > $@
        (for f in $+; do cat $$f; echo; done) | sed '$$ d' >> $@

    config.app.in:
        (echo "# Generated with foobar.sh."; \
            foobar.sh) > $@
    .PHONY: config.app.in

Ensuite, déplacez vos config a config.in et exécuter make pour générer config .

0voto

knope Points 3

J'ai joué avec le concept d'une config.d pour l'organisation de ma configuration. Donc, pour ajouter à la pile d'options ci-dessus, voici ce qui a fonctionné pour moi.

La structure du répertoire est la suivante

~/.ssh/config.d
 system_1
 system_2
 system_3
 personal_boxen
 git_things
 random
 rubbish

La fonction qui construit le ~/.ssh/config et vit dans le run-config de mon Shell est la suivante

sshMakeConfig() {
    echo '# AUTOGENERATED by sshMakeConfig()' > ~/.ssh/config
    for i in ~/.ssh/config.d/*
        do echo "#${i}" | tee -a ~/.ssh/config
        cat ${i} >> ~/.ssh/config
    done
}

Vous pouvez également ajouter sshMakeConfig au bas de votre run-config si vous voulez assurer une nouvelle configuration à chaque session Shell.

Chaque fois que j'ai besoin de recompiler ma ~/.ssh/config, je le fais en exécutant sshMakeConfig sous une forme ou une autre (directement, en sourçant mon run-config, ou en démarrant un nouveau Shell).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X