Detener configuración ssh en el primer partido

18

He agregado un proxy local para todos mis hosts en mi configuración .ssh, sin embargo, quiero convertir mi vm local sin el comando proxy. Salida de mi intento de ssh:

debug1: /Users/bbarbour/.ssh/config line 1: Applying options for local.dev
debug1: /Users/bbarbour/.ssh/config line 65: Applying options for *

Dada la siguiente configuración ssh, ¿cómo evito que se aplique ProxyCommand a la entrada local.dev?

Host local.dev
    HostName dev.myserver.com
    User developer
...
Host *
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p
Bill Caldera
fuente

Respuestas:

22

Puede excluir local.dev de ProxyCommand, utilizando !antes:

Host * !local.dev
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

De la documentación de ssh_config :

Si se proporciona más de un patrón, deben estar separados por espacios en blanco.

Se puede negar una entrada de patrón con el prefijo con un signo de exclamación (`! ') . Si se coincide con una entrada negada, se ignora la entrada del Host, independientemente de si coinciden otros patrones en la línea. Por lo tanto, las coincidencias negadas son útiles para proporcionar excepciones para las coincidencias con comodines.

La documentación también decía:

Para cada parámetro, se utilizará el primer valor obtenido . Los archivos de configuración contienen secciones separadas por especificaciones de `` Host '', y esa sección solo se aplica a hosts que coinciden con uno de los patrones dados en la especificación. El nombre de host coincidente es el que aparece en la línea de comando.

Por lo tanto, también puede deshabilitar ProxyCommand para local.dev anulando el valor que ha definido en Host *:

Host local.dev
    HostName dev.myserver.com
    User developer
    ProxyCommand none
Cuonglm
fuente
8

Una opción en el archivo de configuración se aplica la primera vez que coincide. Dado que no tiene ningún ProxyCommand en la entrada del host, *se utilizará el de su entrada.

Hay dos formas de evitar esto:

  • Para los hosts donde no desea usar el comando proxy, simplemente agregue la línea
    ProxyCommand none
  • Para la *entrada, tenga en cuenta específicamente que la entrada no debe aplicarse al host local.devnegándola con un!
    Host! Local.dev *
Jenny D
fuente
para separar múltiples hosts usan espacio. la coma (,) no funcionó para mí. ID de distribuidor: Ubuntu Descripción: Ubuntu 17.10 Lanzamiento: 17.10 Nombre en clave: artful
Aruna
Gracias @ArunaFromLK - ¡No puedo creer que me haya perdido eso, y que nadie más lo haya visto en 3,5 años! He actualizado la respuesta ahora.
Jenny D