es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de utilizar una entrada ssh-config especificada previamente al especificar “Hostname”?

editar: He visto casos en los que esto funciona y casos en los que no, y no estoy seguro de entender cuándo/por qué sucede.

Supongamos que tengo una entrada lo suficientemente complicada donde especifico múltiples parámetros para llegar a thathost:


Host thathost
ControlMaster auto
ServerAliveInterval 8
ConnectTimeout 8
Hostname 192.168.5.1
User mememe
ProxyJump thejumpbox

Quiero reutilizar esta definición para crear entradas adicionales que proporcionen funcionalidades diferentes al agregar o anular algunas configuraciones. Específicamente, especificar un puerto alternativo (no, no quiero hacerlo en la línea de comandos).

Idealmente, me gustaría poder hacer algo como esto:

Host theirhost
Hostname thathost
User themthem

o

Host my-remote-serialport
Hostname thathost
RequestTTY yes
RemoteCommand some-script-that-launches-kermit-on-a-specific-dev-tty

o

Host my-remote-serialport
Hostname thathost
Port 3004

Estoy buscando estrictamente especificar un host en términos de otro existente, no estoy buscando modificar mis entradas Host para que coincidan con algún patrón “trucos”.

Obviamente puedo utilizar ProxyCommand ssh -q nc thathost... o ProxyJump thathost + Hostname localhost seguido de todas las demás anulaciones (bueno, para anular el puerto, lo pasaría a nc), pero eso es tanto feo como ineficiente (una sesión adicional) – por favor, no respondas con eso.

Para mí, esta ha sido la característica faltante de ssh-config, pero tal vez no busqué lo suficiente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para reutilizar una entrada de host complicada mientras se agregan o anulan algunas configuraciones, se puede utilizar la palabra clave Include en el archivo de configuración de SSH.

    Cree un archivo separado con las configuraciones que desea reutilizar y guárdelo con un nombre significativo. Por ejemplo, supongamos que desea reutilizar la configuración para ‘thathost’ y agregar una anulación de puerto, puede crear un archivo ‘thathost_config’ con el siguiente contenido:

    ControlMaster auto
    ServerAliveInterval 8
    ConnectTimeout 8
    Hostname 192.168.5.1
    User mememe
    ProxyJump thejumpbox
    

    Luego, en su archivo de configuración principal de SSH, puede utilizar la siguiente sintaxis para incluir la configuración reutilizable:

    Host theirhost
        Hostname thathost
        User themthem
        Include /path/to/thathost_config
    
    Host my-remote-serialport
        Hostname thathost
        RequestTTY yes
        RemoteCommand some-script-that-launches-kermit-on-a-specific-dev-tty
        Include /path/to/thathost_config
        Port 3004
    

    De esta manera, las configuraciones en ‘thathost_config’ se aplicarán a ‘theirhost’ y ‘my-remote-serialport’, y cualquier configuración adicional en el archivo de configuración principal de SSH anulará las de ‘thathost_config’.

    Tenga en cuenta que la ruta al archivo incluido debe ser una ruta absoluta, no una ruta relativa.

Comments are closed.