OpenSSH deaktiviert ControlMaster für den angegebenen Hostnamen

20

Ich verwende OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011mit Mac OS X Snow Leopard. Ich habe die ControlMasterFunktion konfiguriert, um dauerhafte Verbindungen aufrechtzuerhalten. Ich ~/.ssh/confighabe folgendes:

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

Host *.unfuddle.com
  ControlMaster no

Nach allem, was ich sehe - selbst wenn ich versuche, SSH für unfuddle.com-Hosts zu verwenden, wird immer eine Master-Verbindung hergestellt:

[andrey-mbp ~] $ ssh -v [email protected]
OpenSSH_5.9p1, OpenSSL 0.9.8r 8. Februar 2011
debug1: Konfigurationsdaten lesen /Users/akhkharu/.ssh/config
debug1: /Users/akhkharu/.ssh/config Zeile 1: Anwenden von Optionen für *
debug1: /Users/akhkharu/.ssh/config Zeile 6: Optionen für * .unfuddle.com anwenden
debug1: Konfigurationsdaten lesen /usr/local/Cellar/openssh/5.9p1/etc/ssh_config
debug1: auto-mux: Versucht existierenden Master
debug1: Kontrollsocket "/ms/[email protected]:22" existiert nicht
debug1: Verbindung zu Port 22 von droolit.unfuddle.com [174.129.5.196].
debug1: Verbindung hergestellt.
debug1: Identitätsdatei /Users/akhkharu/.ssh/id_rsa Typ 1
debug1: Identitätsdatei /Users/akhkharu/.ssh/id_rsa-cert Typ -1
debug1: Identitätsdatei /Users/akhkharu/.ssh/id_dsa Typ 2
debug1: Identitätsdatei /Users/akhkharu/.ssh/id_dsa-cert Typ -1
debug1: Identitätsdatei /Users/akhkharu/.ssh/id_ecdsa Typ -1
debug1: Identitätsdatei /Users/akhkharu/.ssh/id_ecdsa-cert Typ -1
debug1: Remote-Protokoll Version 2.0, Remote-Softwareversion OpenSSH_5.8
debug1: match: OpenSSH_5.8 pat OpenSSH *
debug1: Aktivieren des Kompatibilitätsmodus für Protokoll 2.0
debug1: Lokale Versionszeichenfolge SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT gesendet
debug1: SSH2_MSG_KEXINIT empfangen
debug1: kex: server-> client aes128-ctr hmac-md5 keine
debug1: kex: client-> server aes128-ctr hmac-md5 keine
Debug1: Senden von SSH2_MSG_KEX_ECDH_INIT
debug1: erwartet SSH2_MSG_KEX_ECDH_REPLY
debug1: Serverhostschlüssel: RSA a6: 74: 33: 36: 95: 31: 6e: a6: d7: 71: 87: b8: 3c: 38: e2: 60
debug1: Host 'droolit.unfuddle.com' ist bekannt und entspricht dem RSA-Hostschlüssel.
debug1: Gefundener Schlüssel in /Users/akhkharu/.ssh/known_hosts:390
debug1: ssh_rsa_verify: Signatur korrekt
debug1: SSH2_MSG_NEWKEYS gesendet
debug1: erwartet SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS empfangen
debug1: Roaming vom Server nicht erlaubt
debug1: SSH2_MSG_SERVICE_REQUEST gesendet
debug1: SSH2_MSG_SERVICE_ACCEPT empfangen
debug1: Authentifizierungen, die fortgesetzt werden können: publickey
debug1: Nächste Authentifizierungsmethode: publickey
debug1: Bietet einen öffentlichen RSA-Schlüssel: /Users/akhkharu/.ssh/id_rsa
debug1: Server akzeptiert Schlüssel: pkalg ssh-rsa blen 277
debug1: Authentifizierung erfolgreich (publickey).
Authentifiziert bei droolit.unfuddle.com ([174.129.5.196]: 22).
debug1: Multiplex Master Socket einrichten
debug1: channel 0: new [/ms/[email protected]:22]
debug1: control_persist_detach: Hintergrund des Masterprozesses
debug1: Verzweigen in den Hintergrund
debug1: Interaktive Sitzung starten.
debug1: Multiplexing-Steuerverbindung
debug1: channel 1: new [mux-control]
debug1: channel 2: new [client-session]
debug1: Remote: Erzwungener Befehl.
debug1: Remote: Portweiterleitung deaktiviert.
debug1: Remote: X11-Weiterleitung deaktiviert.
debug1: Remote: Agentenweiterleitung deaktiviert.
debug1: Remote: Pty Allocation deaktiviert.
debug1: Remote: Erzwungener Befehl.
debug1: Remote: Portweiterleitung deaktiviert.
debug1: Remote: X11-Weiterleitung deaktiviert.
debug1: Remote: Agentenweiterleitung deaktiviert.
debug1: Remote: Pty Allocation deaktiviert.
debug1: mux_client_request_session: master session id: 2
PTY-Zuweisungsanforderung fehlgeschlagen
Benötige SSH_ORIGINAL_COMMAND
debug1: client_input_channel_req: channel 2 rtype exit-status reply 0
debug1: client_input_channel_req: channel 2 rtype [email protected] reply 0
debug1: channel 2: free: client-session, nchannels 3
debug1: channel 1: free: mux-control, nchannels 2
Gemeinsame Verbindung zu droolit.unfuddle.com geschlossen.
[andrey-mbp ~] $ ll / ms /
insgesamt 0
srw ------- 1 akhkharu admin 0B 17. Juli 11:55 [email protected]: 22

Danke,
Andrey.

Andrey Chernih
quelle

Antworten:

19

Ihre *Host-Strophe fängt es ab. Setzen Sie spezifischere Host-Strophen früher.

Ignacio Vazquez-Abrams
quelle
Danke, aber das würde bei mir nicht funktionieren. Ich muss ControlMaster für alle Hosts aktivieren, aber nicht für unfuddle.com. Ich kann nicht alle Hosts auflisten, die ich in der Konfigurationsdatei verwende. Was zu funktionieren scheint, ist, die Regel für unfuddle.com ganz am Anfang zu platzieren.
Andrey Chernih
8
Sie meinen ... wann haben Sie die spezifischere Host-Strophe früher eingefügt?
Ignacio Vazquez-Abrams
Ja, es ist seltsam, aber es funktioniert.
Andrey Chernih
Ich habe die Manpages seit Ewigkeiten durchsucht, aber es ist eine seltsame Priorität!
JanKanis,
1
Ich fürchte, ich werde mich bis zu meinem Tod fragen, ob Andrej jemals erfahren hat, dass diese Antwort richtig ist und dass der Kommentar, dem er zugestimmt hat, darauf hinweist.
Weit überlegener Mann
10

Wie in der Antwort auf meine ähnliche Frage zu SuperUser beschrieben , können Sie die Syntax "bang" verwenden, um bestimmte Hosts aus der ursprünglichen Zeilengruppe auszuschließen Host *:

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

In meiner Situation stellte ich fest, dass die Reihenfolge der HostAbschnitte bei der Verwendung Host *von irrelevant zu sein schien, aber die obige Methode funktioniert immer.

Scott Dudley
quelle
5

Bei mir funktioniert es , wenn ich zusätzlich eingestellt , ControlPathum noneinnerhalb der hostStrophe.

Du kannst es versuchen:

Host *.unfuddle.com   
    ControlMaster no
    ControlPath none

Dann wird keine Kontrollsitzung generiert.

Tim Weippert
quelle
In meinem Fall musste ich dies tun und legte den Host *Abschnitt am Ende der Datei und es funktionierte.
a3nm