Regexp en .ssh / config


12

En el trabajo, que a menudo tienen que entrar en huéspedes que siguen un esquema de nombres comunes, por ejemplo qc01- qc12, hc01- hc10, y así sucesivamente. Todos estos necesitan obtener los mismos valores de configuración en mi computadora portátil .ssh/config. Por supuesto, podría usar entradas para los hosts qc*y hc*, pero me pregunto si en cambio es posible usar expresiones regulares.

Respuestas:




3

Puede usar expresiones regulares completas en su ssh_config.

La documentación relevante es IMO muy difícil de leer y entender. Solo lo entiendo porque tengo más de 13 años de experiencia en Linux y más de 8 años usando ssh. Así que aquí está mi resumen de la documentación:

  • man ssh_config describe una característica llamada Match
  • entonces hay una característica llamada execque le permite usar un comando de shell arbitrario para determinar una coincidencia
  • es posible pasar parámetros de entrada al comando de shell arbitrario y se describe en la sección etiquetada TOKENS

En mi caso terminé usando en mi~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

La prueba debe hacerse con algo complicado como este. Y para hacer esa prueba llamas ssh -vvv HOSTNAME. Lo que mostrará exactamente lo que está sucediendo y si su nuevo Matchse implementa correctamente.


0

Extendiendo la respuesta de Trevor:

Los hosts más complejos también son posibles, como la coincidencia foo123.123y foo10.10en una regla SIN tener entradas DNS para los nombres de host utilizados:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

Usando el ProxyCommand para manipular el contenido de% h con el shell y conectando al puerto correcto a través de un netcat. De esta forma, puede crear ajustes preestablecidos para la categoría de hosts, sin crear entradas individuales.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.