Il semble que ce que vous recherchez est un moyen de stocker toute votre configuration ssh
et vos variables pour votre projet dans le répertoire du projet, et également que les chemins soient traités de manière relative à un fichier de configuration inclus ssh, plutôt qu'au chemin actuel.
La réponse courte est non - autant que je sache, les inclusions de ssh_config
se comportent de manière similaire à un C
#include
- vous pouvez les traiter comme l'expansion du fichier référencé dans le fichier actuel.
Ceci étant dit, vous avez quelques options pour accomplir cela de manière extensible, avec un degré de convention - personnellement, je versionne beaucoup de mes configurations ssh
, Ma meilleure suggestion est la suivante:
Sous la racine de votre projet, stockez vos configurations ssh
sous un répertoire
mon_projet/
_config.yml
_ssh_config
serveur-1
id_rsa
serveur-1.config
src
3 répertoires, 3 fichiers
Écrivez serveur-1.config
comme ceci:
Host nomduprojet-serveur-1
User root
Hostname serveur-1.example.com
# Notre fichier d'identité se trouve dans le dossier sous ~/.ssh
IdentityFile ~/.ssh/config.d/serveur-1/id_rsa
Sous ~/.ssh/
créez un nouveau dossier, config.d
mkdir -p ~/.ssh/config.d
Pour référencer vos fichiers ssh spécifiques au projet, vous pouvez créer un lien symbolique de mon_projet/_ssh_config/serveur-1
dans config.d
ln -s chemin/vers/mon_projet/_ssh_config/serveur-1 ~/.ssh/config.d/serveur-1
Mettez à jour votre directive Include
dans ~/.ssh/config
:
# Les chemins "Include" relatifs sont supposés être relatifs à ~/.ssh/
Include config.d/serveur-1/serveur-1.config
Maintenant, votre ~/.ssh
ressemble à cela:
.ssh/
config
config.d
serveur-1 -> /chemin/vers/mon_projet/_ssh_config/serveur-1/
id_rsa
serveur-1.config
2 répertoires, 3 fichiers
L'avantage de cette approche est que vous pouvez facilement l'étendre à serveur-2
, 3, 4, etc., ou à d'autres projets. Il vous suffit de créer un lien symbolique de chemin/vers/serveur-x
dans config.d
, et vous pouvez utiliser des globules dans votre Include
au niveau de l'utilisateur pour y veiller:
Include config.d/**/*.config
Je suggère que stocker des clés ssh
dans le projet semble peu conventionnel, potentiellement dangereux et pas particulièrement utile. Si votre objectif est la portabilité de votre configuration, je suggère de faire une exception pour le chemin de votre clé privée.