OpenSSH deshabilita ControlMaster para el nombre de host dado

20

Estoy usando OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011con Mac OS X Snow Leopard. Tengo una ControlMasterfunción configurada para mantener conexiones persistentes. Mi ~/.ssh/configtiene lo siguiente:

Host *
  ControlPath /ms/%r@%h:%p
  ControlMaster auto
  ControlPersist 4h

Host *.unfuddle.com
  ControlMaster no

Sin embargo, por lo que veo, incluso cuando estoy tratando de usar SSH para hosts unfuddle.com, la conexión maestra siempre se crea:

[andrey-mbp ~] $ ssh -v [email protected]
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 de febrero de 2011
debug1: lectura de datos de configuración /Users/akhkharu/.ssh/config
debug1: /Users/akhkharu/.ssh/config línea 1: aplicando opciones para *
debug1: /Users/akhkharu/.ssh/config línea 6: aplicando opciones para * .unfuddle.com
debug1: lectura de datos de configuración /usr/local/Cellar/openssh/5.9p1/etc/ssh_config
debug1: auto-mux: intentando maestro existente
debug1: el socket de control "/ms/[email protected]:22" no existe
debug1: Conexión al puerto 22 droolit.unfuddle.com [174.129.5.196].
debug1: conexión establecida.
debug1: archivo de identidad /Users/akhkharu/.ssh/id_rsa tipo 1
debug1: archivo de identidad /Users/akhkharu/.ssh/id_rsa-cert type -1
debug1: archivo de identidad /Users/akhkharu/.ssh/id_dsa tipo 2
debug1: archivo de identidad /Users/akhkharu/.ssh/id_dsa-cert type -1
debug1: archivo de identidad /Users/akhkharu/.ssh/id_ecdsa tipo -1
debug1: archivo de identidad /Users/akhkharu/.ssh/id_ecdsa-cert type -1
debug1: protocolo remoto versión 2.0, versión de software remoto OpenSSH_5.8
debug1: match: OpenSSH_5.8 pat OpenSSH *
debug1: habilitación del modo de compatibilidad para el protocolo 2.0
debug1: cadena de versión local SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT enviado
debug1: SSH2_MSG_KEXINIT recibido
debug1: kex: servidor-> cliente aes128-ctr hmac-md5 ninguno
debug1: kex: cliente-> servidor aes128-ctr hmac-md5 ninguno
depuración1: envío de SSH2_MSG_KEX_ECDH_INIT
debug1: esperando SSH2_MSG_KEX_ECDH_REPLY
depuración1: clave de host del servidor: RSA a6: 74: 33: 36: 95: 31: 6e: a6: d7: 71: 87: b8: 3c: 38: e2: 60
debug1: el host 'droolit.unfuddle.com' es conocido y coincide con la clave de host RSA.
debug1: Clave encontrada en /Users/akhkharu/.ssh/known_hosts:390
debug1: ssh_rsa_verify: firma correcta
debug1: SSH2_MSG_NEWKEYS enviado
debug1: esperando SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS recibidos
debug1: itinerancia no permitida por el servidor
debug1: SSH2_MSG_SERVICE_REQUEST enviado
debug1: SSH2_MSG_SERVICE_ACCEPT recibido
debug1: Autenticaciones que pueden continuar: publickey
debug1: Siguiente método de autenticación: publickey
debug1: Ofrecer clave pública RSA: /Users/akhkharu/.ssh/id_rsa
debug1: el servidor acepta la clave: pkalg ssh-rsa blen 277
debug1: Autenticación exitosa (clave pública).
Autenticado en droolit.unfuddle.com ([174.129.5.196]: 22).
debug1: configuración del socket maestro multiplex
debug1: canal 0: nuevo [/ms/[email protected]:22]
debug1: control_persist_detach: proceso maestro en segundo plano
debug1: bifurcación a fondo
debug1: entrando en sesión interactiva.
debug1: conexión de control de multiplexación
debug1: canal 1: nuevo [control de mux]
debug1: canal 2: nuevo [sesión de cliente]
debug1: Remoto: comando forzado.
debug1: Remoto: reenvío de puertos deshabilitado.
debug1: Remoto: reenvío X11 deshabilitado.
debug1: Remoto: reenvío de agente deshabilitado.
debug1: Remoto: asignación de Pty deshabilitada.
debug1: Remoto: comando forzado.
debug1: Remoto: reenvío de puertos deshabilitado.
debug1: Remoto: reenvío X11 deshabilitado.
debug1: Remoto: reenvío de agente deshabilitado.
debug1: Remoto: asignación de Pty deshabilitada.
debug1: mux_client_request_session: id de sesión maestra: 2
Solicitud de asignación de PTY fallida
Necesita SSH_ORIGINAL_COMMAND
debug1: client_input_channel_req: canal 2 rtype salida-estado respuesta 0
debug1: client_input_channel_req: canal 2 rtype [email protected] respuesta 0
debug1: canal 2: gratis: sesión de cliente, nchannels 3
debug1: canal 1: libre: mux-control, nchannels 2
Conexión compartida a droolit.unfuddle.com cerrada.
[andrey-mbp ~] $ ll / ms /
total 0
srw ------- 1 akhkharu admin 0B 17 de julio 11:55 [email protected]: 22

Gracias
Andrey.

Andrey Chernih
fuente

Respuestas:

19

Tu *estrofa del anfitrión lo está atrapando. Ponga estrofas de host más específicas antes.

Ignacio Vazquez-Abrams
fuente
Gracias, pero eso no funcionaría para mí. Necesito ControlMaster habilitado para todos los hosts, pero no para unfuddle.com. No puedo enumerar todos los hosts que uso en el archivo de configuración. Lo que parece estar funcionando es colocar la regla para unfuddle.com desde el principio.
Andrey Chernih
8
¿Quieres decir ... cuando pones la estrofa del host más específica antes?
Ignacio Vazquez-Abrams
Sí, es extraño, pero funciona.
Andrey Chernih
Había estado buscando en las páginas del manual durante años, ¡pero es una extraña prioridad!
JanKanis
1
Me temo que me preguntaré hasta el día de mi muerte si Andrey alguna vez captó el hecho de que esta respuesta es correcta y que el comentario con el que estuvo de acuerdo lo señala.
vastlysuperiorman
10

Como se describe en la respuesta a mi pregunta similar sobre SuperUser , puede usar la sintaxis "bang" para excluir hosts específicos de la Host *estrofa original , de esta manera:

Host * !*.unfuddle.com
    ControlPath /ms/%r@%h:%p
    ControlMaster auto
    ControlPersist 4h

En mi situación, descubrí que el orden de las Hostsecciones cuando se usaba Host *parecía ser irrelevante, pero el método anterior siempre funciona.

Scott Dudley
fuente
5

Para mí funciona cuando, además, puse ControlPatha nonedentro de la hostestrofa.

Puedes probar:

Host *.unfuddle.com   
    ControlMaster no
    ControlPath none

Entonces no se generará ninguna sesión de control.

Tim Weippert
fuente
En mi caso, tuve que hacer esto y poner la Host *sección al final del archivo y funcionó.
a3nm