En caso de que importe:
- SO: Ubuntu 10.04
- SSH: OpenSSH_5.3p1 Debian-3ubuntu5
Me gustaría que un archivo de configuración SSH incluya otro. El caso de uso sería definir lo que quiera en mi .ssh/config
archivo predeterminado y luego incluir un par de cosas adicionales en un archivo separado (por ejemplo ~/.ssh/foo.config
). Sin embargo, quiero que el segundo archivo incorpore el primero, por lo que no tengo que duplicar todo en el primero. ¿Eso es factible? ¡Gracias!
Respuestas:
Desde 7.3p1 en adelante, existe la
Include
palabra clave, que le permite incluir archivos de configuración.Por ejemplo, podrías tener en
~/.ssh/config
:y en
~/.ssh/config.d/home
:De los comentarios, use lo siguiente para incluir todos los archivos en el
config.d
directorio:fuente
Include config.d/*
para incluir todas las entradas enconfig.d
.Host
entradas.No, que yo sepa, esto no es posible.
Aquí están los enlaces a las solicitudes de funciones abiertas / tickets de error correspondientes:
https://bugzilla.mindrot.org/show_bug.cgi?id=1585
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/739495
fuente
Slightly modified patch applied, this will be in openssh-7.3
Si desea iniciar un cliente ssh, puede hacerlo en bash:
entonces usas ssh normalmente y tendrá ambos archivos leídos en ese orden.
Para el demonio del servidor
sshd
, puede hacer lo mismo, solo use en-f
lugar de-F
y escriba esto donde inicie el demonio directamente. No necesitas un alias.Una segunda posibilidad de acuerdo con la página del manual es colocar la configuración de todo el sistema
/etc/ssh/ssh_config
y la del usuario~/.ssh/config
.Actualización Aparentemente hay algún problema con algunas versiones de bash y cómo se crean los dispositivos. (ver http://bugs.alpinelinux.org/issues/1465 )
Esta es una solución (aunque en mi opinión es fea):
así que si lo desea, puede crear una función a partir de él (o un script):
fuente
~/.ssh/config
, 3./etc/ssh/ssh_config
, no debería necesitar pasar~/.ssh/config
la línea de comando también. Soloalias ssh='ssh -F ~/.ssh/foo.config'
y~/.ssh/config
debería ser recogido después de eso. Siempre que no te importefoo.config
que te carguen primero, eso debería ser más limpio que la solución anterior.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
De manera similar a la otra 'fea', aquí está el mío:
fuente
sftp
comando no activará el recálculo de la configuración.Bueno, hago un poco de trampa para hacer esto. En mis archivos bash .profile-ish tengo un bloque que reemplaza varias partes de mi directorio de inicio al iniciar sesión, así que solo genero uno nuevo cada vez. Ejemplo:
Esto también me permite hacer cosas como agregar bloques de configuración al archivo de configuración ssh solo si estoy en el host A o B, pero no en mis sistemas domésticos.
Ahora sé que alguien se quejará de que si inicias sesión mucho, esto podría causar una desaceleración excesiva, pero en la práctica nunca lo he notado. Y estoy seguro de que podría poner esto en un script y dispararlo también a través de cron.
fuente
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
Otra solución basada en FUSE (no la probé yo mismo):
https://github.com/markhellewell/sshconfigfs
"En lugar de tener que seguir administrando un archivo grande, [...] cree un" archivo de configuración "dinámicamente a partir de muchos fragmentos lógicos más pequeños".
También encontré un artículo que hace esto a través de FIFOs: http://www.linuxsysadmintutorials.com/multiple-ssh-client-configuration-files/
fuente
Ninguna de estas soluciones de alias funciona para
git
otros programas que no seanssh
.He abofeteado un rápido y sucio, pero es posible que desee mejorarlo.
Agregue esto a su
~/.bashrc
Cada vez que inicie una sesión, fusionará todos los archivos
~/.ssh/config.d
. (línea 3)La desventaja de esta versión es que si cambia la
~/.ssh/config
próxima sesión, abrirá sus cambios, por lo que para evitar que mueva el archivo existente a un archivo .bak. (línea 2) El problema es que tendrás un montón de archivos .bak después de un tiempo.fuente
is_anything_changed
condiciónPuede actualizar fácilmente la versión SSH en Ubuntu a v7.3 (probado en Ubuntu Xenial 16.04) instalando paquetes de Yakkety:
Verifique la versión SSH
Configure SSH para usar incluye desde el directorio ~ / .ssh / config.d
fuente
Mi tonta respuesta:
Así que me decidí por esto:
~/.ssh/config.d/
cat ~/.ssh/config.d/* > ~/.ssh/config
Include config.d/*
fuente
Tampoco puedo actualizar SSH en mi máquina.
Usé GNU make para generar el archivo de configuración ssh solo cuando era necesario :
Entonces ssh tiene un alias para
Funciona a las mil maravillas.
fuente