Tenemos un servidor bastión que usamos para conectarnos a múltiples hosts, y nuestro .ssh / config ha crecido a más de mil líneas (tenemos cientos de hosts a los que nos conectamos). Esto está comenzando a ser un poco difícil de manejar y me gustaría saber si hay una manera de dividir el archivo .ssh / config en varios archivos. Idealmente, deberíamos especificar en algún lugar que otros archivos se tratarían como un archivo .ssh / config, posiblemente como:
~/.ssh/config
~/.ssh/config_1
~/.ssh/config_2
~/.ssh/config_3
...
He leído la documentación en ssh / config, y no veo que esto sea posible. Pero tal vez alguien más ha tenido un problema similar y ha encontrado una solución.
Respuestas:
El
~/.ssh/config
archivo no tiene una directiva para incluir otros archivos, posiblemente relacionados con la verificación de SSH para permisos de archivos.Las sugerencias sobre esto pueden incluir una secuencia de comandos para agrupar varios cambios juntos, ya sea en el sistema o mediante ganchos de registro en un repositorio. También se pueden buscar herramientas como Puppet o Augeas.
Sin embargo, sin importar cómo lo abordes, tendrás que concatenar archivos individuales para que sean un solo archivo desde fuera del archivo.
nota: sobrescribir:
>
vs 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.
fuente
Puede especificar el archivo de configuración actual para usar en la opción ssh de esta manera:
Parece que es la única forma.
Además, no hay forma de incluir una configuración en otra.
fuente
Comenzando con ssh 7.3 (lanzado el 1 de agosto de 2016), hay una
Include
directiva disponible.(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 )
fuente
config
archivo. No puedo entender por qué no funciona en la parte inferior.Yo personalmente uso esos comandos para compilar la configuración ssh:
o:
porque:
no me funciona, volviendo:
Espero que esto sea de alguna ayuda.
fuente
ssh -F <(cat .ssh/*.config)
Sería ideal. También se me ocurrió esto, pero recibo el mismo error. Alguien sabe cuál es el problema aquí?También usaría
cat config_* > config
para generar toda la configuración. Pero no usaría puppet / cfengine, etc. para esto, si aún no están en su lugar (por cierto: ¿por qué no usar un sistema de administración de configuración?).Generaría un paquete (deb, rpm) y lo pondría en un repositorio local. Y en la secuencia de comandos postinst el gato genera su configuración. Quizás también incluya una carpeta local ... La ventaja es que las actualizaciones ssh / config se activan diariamente mientras se ejecuta cron-apt & Co.
fuente
Puede usar un Makefile en
~/.ssh
:Luego mueva su existente
config
aconfig.in
y ejecutemake
para generarconfig
.fuente
He estado jugando con el concepto de un
config.d
directorio para mi organización de configuración. Entonces, para agregar al conjunto de opciones anterior, esto es lo que ha estado funcionando para mí.La estructura del directorio es algo así como
La función que construye ~ / .ssh / config y vive en la configuración de ejecución de mi shell es la siguiente
Opcionalmente, agregue
sshMakeConfig
al final de su configuración de ejecución si desea garantizar una nueva configuración en cada sesión de shellCada vez que necesito recompilar mi ~ / .ssh / config, lo hago ejecutando
sshMakeConfig
de alguna forma (directamente, obteniendo mi run-config o iniciando un nuevo shell)fuente