Solución 1:
El ~/.ssh/config
file no tiene una directiva para incluir otros archivos, posiblemente relacionada con la verificación de permisos de archivos de SSH.
Las sugerencias en torno a esto pueden incluir un script para procesar varios cambios juntos, ya sea en el sistema o a través de ganchos de registro en un repositorio. También se pueden buscar herramientas como Puppet o Augeas.
Sin embargo, sin embargo, tendrá que concatenar archivos individuales para que sean un solo archivo desde fuera del archivo.
$ cat ~/.ssh/config_* >> ~/.ssh/config
nota: sobrescribir:>
v.s. agregar:>>
Actualización de diciembre de 2017:
Desde 7.3p1 en adelante, existe la opción Incluir. Lo que le permite incluir archivos de configuración.
Include
Include the specified configuration file(s). Mul‐
tiple pathnames may be specified and each pathname
may contain glob(3) wildcards and, for user config‐
urations, shell-like “~” references to user home
directories. Files without absolute paths are
assumed to be in ~/.ssh if included in a user con‐
figuration file or /etc/ssh if included from the
system configuration file. Include directive may
appear inside a Match or Host block to perform con‐
ditional inclusion.
Solución 2:
Puede especificar el archivo de configuración actual para usar en la opción ssh como esta:
ssh -F /path/to/configfile
Parece que es la única forma.
Además, no hay forma de incluir una configuración en otra.
Solución 3:
A partir de ssh 7.3 (lanzado el 1 de agosto de 2016), un Include
directiva está disponible.
Incluir :incluye los archivos de configuración especificados. Se pueden especificar varios nombres de ruta y cada nombre de ruta puede contener globwildcards y referencias "~" similares a shell a los directorios de inicio del usuario. Se supone que los archivos sin rutas absolutas están en ~/.ssh
. UnInclude
directiva puede aparecer dentro de un Match
o Host
bloquear para realizar la inclusión condicional.
(Aquí está el enlace al informe de error resuelto, que también incluye el parche:https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24)
Solución 4:
Yo personalmente uso esos comandos para compilar la configuración ssh:
alias compile-ssh-config='echo -n > ~/.ssh/config && cat ~/.ssh/*.config > ~/.ssh/config'
alias ssh='compile-ssh-config && ssh'
# (This will get used by other programs depending on the ~/.ssh/config)
# (If you need you can run the compile-ssh-config command via cron etc.)
o:
alias compile-ssh-config='echo -n > ~/.ssh/config-compilation && cat ~/.ssh/*.config > ~/.ssh/config-compilation'
alias ssh='compile-ssh-config && ssh -F ~/.ssh/config-compilation'
# (This is saver and won't over write an existing ~/.ssh/config file)
porque:
alias ssh='ssh -F <(cat .ssh/*.config)'
no me funciona, devolviendo:
ssh: Can't open user config file /dev/fd/63: Bad file descriptor
Espero que esto sea de alguna ayuda.
Solución 5:
También usaría cat config_* > config
para generar toda la configuración. Pero no usaría títeres/cfengine, etc. para esto, si aún no están implementados (por cierto, ¿por qué no usar un sistema de administración de configuración?).
Generaría un paquete (deb, rpm) y lo colocaría en un repositorio local. Y en el script postinst, el gato genera su configuración. Tal vez también incluya una carpeta local... La ventaja es que las actualizaciones de ssh/config se activan diariamente mientras se ejecuta cron-apt &Co.