Dans le cas où cela compte:
- OS: Ubuntu 10.04
- SSH: OpenSSH_5.3p1 Debian-3ubuntu5
J'aimerais qu'un fichier de configuration SSH en inclue un autre. Le cas d'utilisation serait de définir ce que je veux dans mon .ssh/config
fichier par défaut , puis de pré-ajouter quelques éléments supplémentaires dans un fichier séparé (par exemple ~/.ssh/foo.config
). Je souhaite cependant que le deuxième fichier intègre le premier. Je n'ai donc pas à tout dupliquer dans le premier. Est-ce faisable? Merci!
Réponses:
A partir de 7.3p1, il y a le
Include
mot - clé, qui vous permet d'inclure des fichiers de configuration.Par exemple, vous pourriez avoir dans
~/.ssh/config
:et dans
~/.ssh/config.d/home
:A partir des commentaires, utilisez ce qui suit pour inclure tous les fichiers du
config.d
répertoire:la source
Include config.d/*
pour inclure toutes les entrées dansconfig.d
.Host
entrées.Non, à ma connaissance, ce n'est pas possible.
Voici les liens vers les demandes de fonctionnalités ouvertes / tickets de bogues correspondants:
https://bugzilla.mindrot.org/show_bug.cgi?id=1585
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/739495
la source
Slightly modified patch applied, this will be in openssh-7.3
Si vous voulez démarrer un client ssh, vous pouvez le faire en bash:
Ensuite, vous utilisez ssh normalement et les deux fichiers seront lus dans cet ordre.
Pour le démon de serveur,
sshd
vous pouvez faire la même chose, utilisez simplement-f
au lieu de-F
et notez-le où vous démarrez directement le démon. vous n'avez pas besoin d'un alias.Une deuxième possibilité, selon la page de manuel, est de mettre la configuration système
/etc/ssh/ssh_config
et celle de l'utilisateur~/.ssh/config
.Mise à jour Apparemment, il existe un problème avec certaines versions de bash et la façon dont les périphériques sont créés. (voir http://bugs.alpinelinux.org/issues/1465 )
Ceci est une solution de contournement (bien que moche à mon avis):
alors si vous voulez, vous pouvez créer une fonction (ou un script):
la source
~/.ssh/config
, 3./etc/ssh/ssh_config
, vous ne devriez pas avoir besoin de passer également~/.ssh/config
sur la ligne de commande. Justealias ssh='ssh -F ~/.ssh/foo.config'
et~/.ssh/config
devrait être ramassé après cela. Tant que cela ne vous dérange pas d'foo.config
être chargé en premier, cela devrait être plus propre que la solution de contournement ci-dessus.À 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
De la même manière que l'autre "moche", voici le mien one-liner:
la source
sftp
commande ne déclenchera pas de recalcul de configuration.Eh bien, je triche un peu pour faire ça. Dans mes fichiers bash .profile-ish, il y a un bloc qui remplace divers éléments de mon répertoire personnel lors de la connexion. Par conséquent, j'en génère simplement un nouveau à chaque fois. Exemple:
Cela me permet également de faire des choses comme ajouter des blocs de configuration au fichier de configuration ssh uniquement si je suis sur l’hôte A ou B, mais pas sur mes systèmes domestiques.
Maintenant, je sais que quelqu'un va comprendre que si vous vous connectez souvent, vous risquez un ralentissement excessif, mais en pratique, je ne l'ai jamais remarqué. Et je suis sûr que vous pourriez mettre cela dans un script et le lancer via cron aussi.
la source
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
Une autre solution basée sur FUSE (non testée moi-même):
https://github.com/markhellewell/sshconfigfs
"Plutôt que de devoir continuer à gérer un gros fichier, créez plutôt un" fichier "de configuration de manière dynamique à partir de nombreux morceaux logiques plus petits."
J'ai également trouvé un article faisant cela via des FIFO: http://www.linuxsysadmintutorials.com/multiple-ssh-client-configuration-files/
la source
Aucune de ces solutions d'alias ne fonctionne pour
git
ou d'autres programmes quessh
.J'ai giflé ensemble, mais vous voudrez peut-être l'améliorer.
Ajoutez ceci à votre
~/.bashrc
Chaque fois que vous démarrez une session, tous les fichiers se fusionnent
~/.ssh/config.d
. (ligne 3)L'inconvénient de cette version est que, si vous modifiez
~/.ssh/config
la session suivante, vous ouvrez vos modifications et que, pour éviter cela, je déplace le fichier existant dans un fichier .bak. (ligne 2) Le problème, c'est que vous allez avoir beaucoup de fichiers .bak après un moment.la source
is_anything_changed
conditionsVous pouvez facilement mettre à niveau la version SSH sur Ubuntu vers la version 7.3 (testée sur Ubuntu Xenial 16.04) en installant des packages à partir de Yakkety:
Vérifier la version de SSH
Configurez SSH pour utiliser des inclus dans le répertoire ~ / .ssh / config.d
la source
Ma réponse idiote:
Alors je me suis installé pour ça:
~/.ssh/config.d/
cat ~/.ssh/config.d/* > ~/.ssh/config
Include config.d/*
la source
Je ne peux pas non plus mettre à niveau SSH sur ma machine.
J'ai utilisé GNU make pour générer le fichier de configuration ssh uniquement lorsque cela est nécessaire :
Ensuite, ssh est associé à
Il fonctionne comme un charme.
la source