एसएसएच मल्टीप्लेक्सिंग की सीमा


26

मेरी .ssh/configफ़ाइल में निम्नलिखित प्रविष्टि है

Host AAA
    User BBB
    HostName CCC
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p

उपरोक्त मुझे एक ही ssh कनेक्शन के माध्यम से एक ही ssh कनेक्शन के माध्यम से कई बार मल्टीप्लेक्स करने की अनुमति देता है, जब भी मुझे नए सत्र की आवश्यकता होती है (जब तक कि मास्टर कनेक्शन खुला रहता है)।

हालाँकि, मैंने देखा है कि एक बार जब मेरे पास कनेक्शनों की अपेक्षाकृत उच्च # बहुतायत होती है (~ 7), तो मैं उसी बहुसंबंधित कनेक्शन में अधिक सत्र नहीं जोड़ सकता, और मुझे निम्न त्रुटि मिलने लगती है:

> ssh -X AAA

mux_client_request_session: session request failed: Session open refused by peer
Password: 

मेरे सवाल:

क्यों यह त्रुटि आ रही है? क्या ssh सत्रों के # में एक सीमा है जिसे मैं एक ही कनेक्शन में मल्टीप्लेक्स कर सकता हूं? क्या मैं उस सीमा को बदल सकता हूँ? यह एक बुरा विचार होगा?


2
मैं सीधे सवालों का जवाब नहीं दे सकता, लेकिन समस्या को ट्रैक करने पर कुछ सुझाव दे सकता हूं। चूंकि सहकर्मी ने कनेक्शन से इनकार कर दिया था, इसलिए मैं उस सिस्टम पर लॉग को देखकर शुरू करूँगा जो आप कनेक्ट कर रहे हैं। देखें कि sshd कोई त्रुटि देता है या नहीं। यदि नहीं, तो LogLevel बढ़ाएँ और पुनः प्रयास करें। यदि आपको एक लॉग संदेश मिलता है जो तुरंत स्पष्ट नहीं है और वाक्यांश के लिए खोज करने से मदद नहीं मिलती है, तो आप स्रोत कोड पर grep का उपयोग कर सकते हैं। त्रुटि संदेश अक्सर परिस्थितियों के सेट से घिरे होते हैं - उनमें से एक (या कुछ) मिले नहीं थे, और इसीलिए यह संदेश आया।
शॉन जे। गोफ

जवाबों:


26

sshdसर्वर पर डेमॉन नेटवर्क कनेक्शन प्रति सत्र की संख्या सीमित है। इसमें MaxSessionsविकल्प द्वारा नियंत्रित किया जाता है /etc/ssh/sshd_configMaxStartupsयदि आप बड़ी संख्या में सत्रों का उपयोग करते हैं तो भी विकल्प बढ़ाना पड़ सकता है। ( man sshd_configअधिक जानकारी के लिए देखें।) MaxSessionsसीमा को संशोधित करने का विकल्प ओपनएसएसएच 5.1 में पेश किया गया है और ऐसा लगता है कि यह संख्या पहले से मुश्किल 10 पर तय की गई थी। यदि आप MaxSessionsसर्वर पर बढ़ते हैं, तो आप sshd[####]: error: no more sessionsसर्वर के लॉग में देखेंगे ।


4

मैं OpenSSH के पुराने संस्करण वाले सर्वर पर इस समस्या में गया था। मैं सर्वर को नियंत्रित करता हूं, और मैंने अपने नामांकित कॉन्फ़िगरेशन में दो CNAME बनाकर समस्या को हल किया है:

realhost.myexample.com.      IN  A       XXX.XXX.XXX.XXX
realhost2.myexample.com.     IN  CNAME   realhost.myexample.com.
realhost3.myexample.com.     IN  CNAME   realhost.myexample.com.

फिर, मेरे स्थानीय ssh क्लाइंट कॉन्फिगर में:

ControlMaster auto
ControlPath ~/.ssh/%r_%p_%h

host realhost
hostname realhost.myexample.com

host realhost2
hostname realhost2.myexample.com

host realhost3
hostname realhost3.myexample.com

ControlPath का कथन है, इसलिए नियंत्रण सॉकेट नाम एक दूसरे पर कदम नहीं रखते हैं।

यह वही है, लेकिन इसे प्रबंधित करना आसान बनाने के लिए, मैंने क्लाइंट साइड पर 'ssh' के लिए एक रैपर स्क्रिप्ट लिखी। यह समझता है कि मेजबानों के 'समूह' हैं (इस मामले में realhost, realhost1, realhost2 में एक समूह शामिल है)। जब 'sshwrapper realhost' जारी करते हैं, अगर कोई खुला चैनल नहीं है, तो तीनों को खोला जाता है, और एक सत्र शुरू होता है। अगली बार चलने पर, यह प्रति चैनल खुले कनेक्शनों की गणना करता है, और चैनल में सबसे कम कनेक्शन वाले नए सत्र को खोलता है।

एक वास्तविक और दो 'नकली' मेजबानों के साथ, मैं एक त्रुटि प्राप्त करने से पहले 30 बार कनेक्ट कर सकता हूं। लॉग इन करना बहुत तेज है, प्रारंभिक समय को छोड़कर, एक या दो समय लगता है, क्योंकि उस समय सभी तीन नियंत्रण चैनल खोले जाते हैं।


स्क्रिप्ट एक वास्तविक समय की तरह लगता है और यह वास्तव में उपयोगी होगा। यदि आपके पास अभी भी है, तो क्या आप इसे जनता के साथ साझा करना चाहेंगे?
Thefourtheye

मुझे यकीन नहीं है कि यह यहाँ उचित है, क्योंकि यह एक सवाल का जवाब नहीं है। इसके अलावा, मैंने इसे केवल अपने लिए लिखा है, और यह एक मैक क्लाइंट (मेरे लिनक्स सर्वर में प्रवेश करने के लिए) पर चलता है। कोड 'ps' आउटपुट को पार्स करता है, और अलग-अलग 'ps' सिंटैक्स के कारण लिनक्स पर चलाने के लिए इसे बदलना होगा।
जोए

काफी उचित। हालांकि सामान्य विचार साझा करने के लिए धन्यवाद।
Thefourtheye

मैंने स्क्रिप्ट को moosiefinance.com:8081/sshm.zip पर रखा है।
जॉय

बहुत बढ़िया ... बहुत बहुत धन्यवाद ... मुझे उस के माध्यम से जाना
thefourtheye
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.