OpenSSH désactive ControlMaster pour un nom d'hôte donné

20

J'utilise OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011avec Mac OS X Snow Leopard. J'ai une ControlMasterfonctionnalité configurée pour maintenir des connexions persistantes. J'ai ~/.ssh/configles éléments suivants:

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

Host *.unfuddle.com
  ControlMaster no

Cependant, d'après ce que je vois - même lorsque j'essaie d'utiliser SSH pour les hôtes unfuddle.com, la connexion principale est toujours créée:

[andrey-mbp ~] $ ssh -v [email protected]
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 février 2011
debug1: lecture des données de configuration /Users/akhkharu/.ssh/config
debug1: /Users/akhkharu/.ssh/config ligne 1: application d'options pour *
debug1: /Users/akhkharu/.ssh/config ligne 6: Application d'options pour * .unfuddle.com
debug1: lecture des données de configuration /usr/local/Cellar/openssh/5.9p1/etc/ssh_config
debug1: auto-mux: essayer le maître existant
debug1: le socket de contrôle "/ms/[email protected]:22" n'existe pas
debug1: connexion au port 22 de droolit.unfuddle.com [174.129.5.196].
debug1: connexion établie.
debug1: fichier d'identité /Users/akhkharu/.ssh/id_rsa type 1
debug1: fichier d'identité /Users/akhkharu/.ssh/id_rsa-cert type -1
debug1: fichier d'identité /Users/akhkharu/.ssh/id_dsa type 2
debug1: fichier d'identité /Users/akhkharu/.ssh/id_dsa-cert type -1
debug1: fichier d'identité /Users/akhkharu/.ssh/id_ecdsa type -1
debug1: fichier d'identité /Users/akhkharu/.ssh/id_ecdsa-cert type -1
debug1: protocole distant version 2.0, version logicielle distante OpenSSH_5.8
debug1: correspondance: OpenSSH_5.8 pat OpenSSH *
debug1: activation du mode de compatibilité pour le protocole 2.0
debug1: chaîne de version locale SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT envoyé
debug1: SSH2_MSG_KEXINIT reçu
debug1: kex: serveur-> client aes128-ctr hmac-md5 aucun
debug1: kex: client-> serveur aes128-ctr hmac-md5 aucun
debug1: envoi de SSH2_MSG_KEX_ECDH_INIT
debug1: attend SSH2_MSG_KEX_ECDH_REPLY
debug1: clé d'hôte du serveur: RSA a6: 74: 33: 36: 95: 31: 6e: a6: d7: 71: 87: b8: 3c: 38: e2: 60
debug1: l'hôte «droolit.unfuddle.com» est connu et correspond à la clé d'hôte RSA.
debug1: clé trouvée dans /Users/akhkharu/.ssh/known_hosts:390
debug1: ssh_rsa_verify: signature correcte
debug1: SSH2_MSG_NEWKEYS envoyé
debug1: attend SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS reçu
debug1: Itinérance non autorisée par le serveur
debug1: SSH2_MSG_SERVICE_REQUEST envoyé
debug1: SSH2_MSG_SERVICE_ACCEPT reçu
debug1: authentifications qui peuvent continuer: publickey
debug1: méthode d'authentification suivante: publickey
debug1: offre de clé publique RSA: /Users/akhkharu/.ssh/id_rsa
debug1: le serveur accepte la clé: pkalg ssh-rsa blen 277
debug1: authentification réussie (publickey).
Authentifié sur droolit.unfuddle.com ([174.129.5.196]: 22).
debug1: configuration du socket maître multiplex
debug1: canal 0: nouveau [/ms/[email protected]:22]
debug1: control_persist_detach: processus maître d'arrière-plan
debug1: bifurquer en arrière-plan
debug1: entrée dans une session interactive.
debug1: connexion de contrôle de multiplexage
debug1: canal 1: nouveau [mux-control]
debug1: canal 2: nouveau [client-session]
debug1: Remote: commande forcée.
debug1: Remote: redirection de port désactivée.
debug1: à distance: le transfert X11 est désactivé.
debug1: À distance: le transfert d'agent est désactivé.
debug1: Remote: allocation Pty désactivée.
debug1: Remote: commande forcée.
debug1: Remote: redirection de port désactivée.
debug1: à distance: le transfert X11 est désactivé.
debug1: À distance: le transfert d'agent est désactivé.
debug1: Remote: allocation Pty désactivée.
debug1: mux_client_request_session: id de session maître: 2
Échec de la demande d'allocation PTY
Besoin de SSH_ORIGINAL_COMMAND
debug1: client_input_channel_req: réponse de l'état de sortie du type 2 du canal rtype 0
debug1: client_input_channel_req: canal 2 rtype [email protected] réponse 0
debug1: canal 2: gratuit: session client, nchannels 3
debug1: canal 1: gratuit: mux-control, nchannels 2
La connexion partagée à droolit.unfuddle.com est fermée.
[andrey-mbp ~] $ ll / ms /
total 0
srw ------- 1 akhkharu admin 0B 17 juil 11:55 [email protected]: 22

Merci,
Andrey.

Andrey Chernih
la source

Réponses:

19

La *strophe de votre hôte l'attrape. Mettez des strophes hôtes plus spécifiques plus tôt.

Ignacio Vazquez-Abrams
la source
Merci, mais ça ne marcherait pas pour moi. J'ai besoin que ControlMaster soit activé pour tous les hôtes, mais pas pour unfuddle.com. Je ne peux pas lister tous les hôtes que j'utilise dans le fichier de configuration. Ce qui semble fonctionner, c'est de placer la règle pour unfuddle.com au tout début.
Andrey Chernih
8
Vous voulez dire ... quand vous avez mis la strophe hôte plus spécifique plus tôt?
Ignacio Vazquez-Abrams
Ouais, c'est étrange, mais ça marche.
Andrey Chernih
Je cherchais les pages de manuel depuis des lustres, mais c'est une étrange priorité!
JanKanis
1
Je crains que je ne me demande jusqu'à mon dernier jour si Andrey a compris le fait que cette réponse est correcte et que le commentaire qu'il approuvait le souligne.
vastlysuperiorman
10

Comme décrit dans la réponse à ma question similaire sur SuperUser , vous pouvez utiliser la syntaxe "bang" pour exclure des hôtes spécifiques de la Host *strophe d' origine , comme ceci:

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

Dans ma situation, j'ai trouvé que l'ordre des Hostsections lors de l'utilisation d'un ne Host *semblait pas pertinent, mais la méthode ci-dessus fonctionne toujours.

Scott Dudley
la source
5

Pour moi , cela fonctionne quand je mets en plus ControlPathà l' noneintérieur de la hoststrophe.

Tu peux essayer:

Host *.unfuddle.com   
    ControlMaster no
    ControlPath none

Aucune session de contrôle ne sera alors générée.

Tim Weippert
la source
Dans mon cas, j'ai dû le faire et mettre la Host *section à la fin du fichier et cela a fonctionné.
a3nm