OpenSSH दिए गए होस्टनाम के लिए ControlMaster अक्षम करें


20

मैं OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011मैक ओएस एक्स स्नो लेपर्ड के साथ उपयोग कर रहा हूं । मेरे पास ControlMasterलगातार कनेक्शन बनाए रखने के लिए कॉन्फ़िगर किया गया फ़ीचर है। मेरे ~/.ssh/configपास निम्नलिखित हैं:

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

Host *.unfuddle.com
  ControlMaster no

हालाँकि, मैं जो देखता हूं - यहां तक ​​कि जब मैं unfuddle.com होस्ट के लिए SSH का उपयोग करने की कोशिश कर रहा हूं, तो मास्टर कनेक्शन हमेशा बनाया जाता है:

[andrey-mbp ~] $ ssh -v git@droolit.unfuddle.com
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 फरवरी 2011
debug1: पठन कॉन्फ़िगरेशन डेटा /User/akhkharu/.ssh/config
debug1: /Users/akhkharu/.ssh/config लाइन 1: * के लिए विकल्प लागू करना
debug1: /User/akhkharu/.ssh/config लाइन 6: * .uncuddle.com के लिए विकल्प लागू करना।
debug1: कॉन्फ़िगरेशन डेटा पढ़ना /usr/local/Cellar/openssh/5.9p1/etc/ssh_config
debug1: ऑटो-मक्स: मौजूदा मास्टर की कोशिश कर रहा है
debug1: कंट्रोल सॉकेट "/ms/git@droolit.unfuddle.com:22" मौजूद नहीं है
debug1: droolit.unfuddle.com से जुड़ना [174.129.5.196] पोर्ट 22।
debug1: कनेक्शन स्थापित किया गया।
debug1: पहचान फ़ाइल /User/akhkharu/.ssh/id_rsa टाइप 1
debug1: पहचान फ़ाइल /User/akhkharu/.ssh/id_rsa-cert टाइप -1
debug1: पहचान फ़ाइल /User/akhkharu/.ssh/id_dsa टाइप 2
debug1: पहचान फ़ाइल /User/akhkharu/.ssh/id_dsa-cert टाइप -1
debug1: पहचान फ़ाइल /User/akhkharu/.ssh/id_ecdsa टाइप -1
debug1: पहचान फ़ाइल /User/akhkharu/.ssh/id_ecdsa-cert टाइप -1
debug1: दूरस्थ प्रोटोकॉल संस्करण 2.0, दूरस्थ सॉफ़्टवेयर संस्करण OpenSSH_5.8
debug1: मैच: OpenSSH_5.8 pat OpenSSH *
debug1: प्रोटोकॉल 2.0 के लिए संगतता मोड को सक्षम करना
debug1: स्थानीय संस्करण स्ट्रिंग SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT को भेजा गया
debug1: SSH2_MSG_KEXINIT को प्राप्त हुआ
debug1: kex: server-> क्लाइंट aes128-ctr hmac-md5 कोई नहीं
debug1: kex: क्लाइंट-> सर्वर aes128-ctr hmac-md5 कोई नहीं
debug1: SSH2_MSG_KEX_ECDH_INIT भेज रहा है
debug1: SSH2_MSG_KEX_ECDH_REPLY की अपेक्षा करना
debug1: सर्वर होस्ट कुंजी: RSA a6: 74: 33: 36: 95: 31: 6e: a6: d7: 71: 87: b8: 3c: 38: e2: 60
debug1: होस्ट 'droolit.unfuddle.com' जाना जाता है और RSA होस्ट कुंजी से मेल खाता है।
debug1: /User/akhkharu/.ssh/ogn_hosts:390 में कुंजी मिली
debug1: ssh_rsa_verify: हस्ताक्षर सही
debug1: SSH2_MSG_NEWKEYS को भेजा गया
debug1: SSH2_MSG_NEWKEYS की अपेक्षा करना
debug1: SSH2_MSG_NEWKEYS प्राप्त किया
debug1: रोमिंग सर्वर द्वारा अनुमति नहीं है
debug1: SSH2_MSG_SERVICE_REQUEST को भेजा गया
debug1: SSH2_MSG_SERVICE_ACCEPT प्राप्त किया
debug1: प्रमाणीकरण जो जारी रख सकते हैं: publickey
debug1: अगली प्रमाणीकरण विधि: publickey
debug1: RSA सार्वजनिक कुंजी पेश करना: /User/akhkharu/.ssh/id_rsa
debug1: सर्वर कुंजी को स्वीकार करता है: pkalg ssh-rsa blen 277
debug1: प्रमाणीकरण सफल हुआ (publickey)।
Droolit.unfuddle.com पर प्रमाणित ([174.129.5.196]: 22)।
debug1: मल्टीप्लेक्स मास्टर सॉकेट स्थापित करना
debug1: चैनल 0: नया [/ms/git@droolit.unfuddle.com:22]
debug1: control_persist_detach: मास्टर प्रक्रिया को पृष्ठभूमि देना
debug1: बैकग्राउंड के लिए फोर्किंग
debug1: इंटरेक्टिव सत्र में प्रवेश करना।
debug1: मल्टीप्लेक्सिंग कंट्रोल कनेक्शन
debug1: चैनल 1: नया [mux-control]
debug1: चैनल 2: नया [ग्राहक-सत्र]
debug1: रिमोट: मजबूर कमांड।
debug1: रिमोट: पोर्ट अग्रेषण अक्षम।
debug1: दूरस्थ: X11 अग्रेषित अक्षम।
debug1: दूरस्थ: एजेंट अग्रेषित अक्षम।
debug1: दूरस्थ: Pty आवंटन अक्षम।
debug1: रिमोट: मजबूर कमांड।
debug1: रिमोट: पोर्ट अग्रेषण अक्षम।
debug1: दूरस्थ: X11 अग्रेषित अक्षम।
debug1: दूरस्थ: एजेंट अग्रेषित अक्षम।
debug1: दूरस्थ: Pty आवंटन अक्षम।
debug1: mux_client_request_session: मास्टर सत्र आईडी: 2
PTY आवंटन अनुरोध विफल
SSH_ORIGINAL_COMMAND की आवश्यकता है
debug1: client_input_channel_req: चैनल 2 rtype निकास-स्थिति उत्तर 0
debug1: client_input_channel_req: चैनल 2 rtype eow@openssh.com उत्तर 0
debug1: चैनल 2: नि: शुल्क: ग्राहक-सत्र, nchannels 3
debug1: चैनल 1: मुफ्त: mux-control, nchannels 2
Droolit.unfuddle.com पर साझा कनेक्शन बंद हो गया।
[andrey-mbp ~] $ ll / ms /
कुल ०
srw ------- 1 akhkharu admin 0B Jul 17 11:55 git@droolit.unfuddle.com: 22

धन्यवाद,
एंड्री।

जवाबों:


19

आपका *मेजबान छंद इसे पकड़ रहा है। पहले से अधिक विशिष्ट मेजबान श्लोक रखें।


धन्यवाद, लेकिन यह मेरे लिए काम नहीं करेगा। मुझे सभी मेजबानों के लिए ControlMaster सक्षम होना चाहिए, लेकिन unfuddle.com के लिए नहीं। मैं उन सभी मेजबानों को सूचीबद्ध नहीं कर सकता, जिनका मैं कॉन्फ़िगरेशन फ़ाइल में उपयोग करता हूं। जो काम करने लगता है वह शुरुआत में unfuddle.com के लिए नियम बना रहा है।
एंड्री चेर्निह

8
आपका मतलब है ... जब आप पहले से अधिक विशिष्ट मेजबान श्लोक डालते हैं?
इग्नासियो वाज़क्वेज़-अब्राम्स

हाँ, यह अजीब है, लेकिन यह काम करता है।
एंड्री चेर्निह जूल

मैं उम्र के लिए manpages खोज रहा था, लेकिन यह एक अजीब प्राथमिकता है!
JanKanis

1
मुझे डर है कि मेरे मरने के दिन तक मैं आश्चर्यचकित रहूंगा यदि एंड्री ने कभी इस तथ्य को पकड़ा कि यह उत्तर सही है, और यह कि वह जो टिप्पणी करता है वह बिंदुओं से सहमत है।
विएटालिसुपरियोर्मैन

10

जैसा कि सुपरयूजर पर मेरे इसी प्रश्न के उत्तर में वर्णित है , आप विशिष्ट मेजबान को Host *इस तरह से मूल मेजबान से बाहर करने के लिए "बैंग" वाक्यविन्यास का उपयोग कर सकते हैं :

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

अपनी स्थिति में, मैंने पाया कि अप्रासंगिक Hostहोने का उपयोग करते समय वर्गों का क्रम Host *अप्रासंगिक है, लेकिन उपरोक्त विधि हमेशा काम करती है।


5

मेरे लिए यह तब काम करता है जब मैं अतिरिक्त रूप ControlPathसे छंद के noneभीतर सेट होता हूं host

तुम कोशिश कर सकते हो:

Host *.unfuddle.com   
    ControlMaster no
    ControlPath none

तब कोई नियंत्रण सत्र उत्पन्न नहीं होगा।


मेरे मामले में मुझे ऐसा करना था Host *और फ़ाइल के अंत में सेक्शन डाल दिया और यह काम कर गया।
a3nm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.