OpenSSH के लिए डिफ़ॉल्ट निष्क्रिय समयबाह्य क्या है?


25

मुझे इस सरल प्रश्न का उत्तर नहीं मिल रहा है, जिसे मुझे कुछ अनुपालन दस्तावेज़ों की आवश्यकता है।

CentOS 6.5 (OpenSSH 5.3p1-94.el6) की एक डिफ़ॉल्ट स्थापना पर, उपयोगकर्ता के SSH सत्र को निष्क्रिय होने के कितने समय बाद समाप्त किया जाएगा? मेरा मानना ​​है कि निष्क्रिय समय समाप्त करने के लिए निम्नलिखित सेट किए जा सकते हैं, लेकिन उन्हें डिफ़ॉल्ट रूप से टिप्पणी की जाती है।

$ grep -i alive /etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3

इसके अलावा, क्या वर्तमान sshdसेटिंग्स की सूची को डंप करने के लिए एक कमांड है ? मुझे कुछ भी दिखाई नहीं दे रहा है man sshd


3
कुछ गोले एक टाइमआउट के बाद बाहर निकलने के लिए सेट किए जा सकते हैं। यह ssh सत्र को समाप्त करने का कारण होगा। जांचें कि आपका TMOUT पर्यावरण चर सेट है या नहीं।
केन्स्टर

जवाबों:


23

sshd_configआमतौर पर टिप्पणी की गई लाइनें डिफॉल्ट को प्रदर्शित करती हैं। यह आपके प्रश्न की सभी पंक्तियों का मामला है। आप इसे sshd_configमैनपेज में सत्यापित कर सकते हैं । यहाँ प्रासंगिक स्निपेट हैं:

TCPKeepAlive

      निर्दिष्ट करता है कि क्या सिस्टम को दूसरी तरफ टीसीपी रखने के संदेश भेजने चाहिए। यदि उन्हें भेजा जाता है, तो किसी एक मशीन के कनेक्शन या दुर्घटना की मृत्यु को ठीक से देखा जाएगा। हालांकि, इसका मतलब है कि यदि मार्ग अस्थायी रूप से नीचे है, तो कनेक्शन मर जाएगा, और कुछ लोगों को यह कष्टप्रद लगता है। दूसरी ओर, यदि टीसीपी के रखवाले नहीं भेजे जाते हैं, तो सत्र सर्वर पर "भूत" उपयोगकर्ताओं को छोड़कर और सर्वर संसाधनों का उपभोग करते हुए अनिश्चित काल तक लटका रह सकता है।

      डिफ़ॉल्ट "हाँ" है (टीसीपी रखने के लिए संदेश भेजने के लिए), और सर्वर सूचना देगा यदि नेटवर्क नीचे चला जाता है या क्लाइंट होस्ट क्रैश करता है। यह असीम रूप से लटके सत्रों से बचा जाता है।

      टीसीपी रखने के संदेशों को निष्क्रिय करने के लिए, मान को "नहीं" पर सेट किया जाना चाहिए।

      इस विकल्प को पहले कहा जाता था KeepAlive

ClientAliveCountMax

      क्लाइंट जिंदा संदेशों की संख्या सेट करें (नीचे देखें) जो sshd (8) के बिना भेजी जा सकती है जिससे क्लाइंट को कोई संदेश वापस मिल सके। यदि क्लाइंट लाइव संदेश भेजे जा रहे हैं, तो यह सीमा समाप्त हो गई है, तो sshd सत्र को समाप्त करते हुए ग्राहक को डिस्कनेक्ट कर देगा। यह ध्यान रखना महत्वपूर्ण है कि क्लाइंट जिंदा संदेशों का उपयोग बहुत अलग हैTCPKeepAlive (नीचे)(ऊपर)। क्लाइंट जिंदा संदेश एन्क्रिप्टेड चैनल के माध्यम से भेजे जाते हैं और इसलिए यह खराब नहीं होंगे। इसके द्वारा सक्षम टीसीपी रखने का विकल्प TCPKeepAliveखराब है। जब क्लाइंट या सर्वर किसी कनेक्शन के निष्क्रिय हो जाने पर निर्भर करते हैं, तो क्लाइंट ज़िंदा तंत्र मूल्यवान होता है।

      डिफ़ॉल्ट मान है 3. यदि ClientAliveInterval(नीचे देखें) 15 पर सेट है, और ClientAliveCountMaxडिफ़ॉल्ट पर छोड़ दिया जाता है, तो लगभग 45 सेकंड के बाद अनुत्तरदायी एसएसएच ग्राहकों को काट दिया जाएगा। यह विकल्प केवल प्रोटोकॉल संस्करण 2 पर लागू होता है।

ClientAliveInterval

      सेकंड में एक टाइमआउट अंतराल सेट करता है जिसके बाद यदि क्लाइंट से कोई डेटा प्राप्त नहीं हुआ है, तो sshd (8) क्लाइंट से प्रतिक्रिया का अनुरोध करने के लिए एन्क्रिप्टेड चैनल के माध्यम से एक संदेश भेजेगा। डिफ़ॉल्ट 0 है, यह दर्शाता है कि ये संदेश क्लाइंट को नहीं भेजे जाएंगे। यह विकल्प केवल प्रोटोकॉल संस्करण 2 पर लागू होता है।


1
अगर गलत है तो मुझे सुधारो, लेकिन अगर मेरे और मशीन (w / default config) के बीच कोई फ़ायरवॉल नहीं था, तो मैं कभी भी डिस्कनेक्ट नहीं होगा? मुझे पता है कि हमारा फ़ायरवॉल ६० मिनट के बाद निष्क्रिय टीसीपी कनेक्शन छोड़ देता है, इसीलिए जहां समापन निष्क्रिय कनेक्शन हो रहा है। मैं सिर्फ यह देखना चाहता था कि ओपनएसएसएच स्वयं स्पष्ट रूप से सत्र बंद करता है या नहीं। मुझे लगता है कि जवाब नहीं है, खुलता है, स्पष्ट रूप से निष्क्रिय कनेक्शन बंद नहीं करता है, लेकिन फ़ायरवॉल आमतौर पर करते हैं। आपके उत्तर में उल्लिखित सेटिंग्स वास्तव में कनेक्शन को बनाए रखने या सत्र को ठीक से समाप्त करने में मदद करती हैं अगर यह गिरा दिया गया है।
बंजर

2
उद्धृत पाठ कहता है कि ClientAliveInterval के लिए डिफ़ॉल्ट 0 है, जिसका अर्थ है कि यह समय अंतराल को परिभाषित नहीं करता है जिसके लिए एक कनेक्शन खुला रहता है। और फिर भी हम जानते हैं कि समय अंतराल में डिफ़ॉल्ट रूप से कुछ परिमित मूल्य होता है। इसलिए ऐसा लगता है कि कुछ अन्य पैरामीटर होने चाहिए जो यह निर्धारित करते हैं कि कनेक्शन डिफ़ॉल्ट रूप से कितने समय तक खुला रहता है। अगर ऊपर दिया गया मेरा विश्लेषण सही है, तो मान लीजिए कि सर्वर और क्लाइंट दोनों ही ओपनशेड चलाने वाली लाइनक्स मशीन हैं, और दोनों सभी डिफॉल्ट का उपयोग कर रहे हैं। इस मामले में, कौन सा पक्ष डिफ़ॉल्ट सेट करता है, इसका मूल्य क्या है, और यह कहां सेट है?
बेन क्राउल

2
@BenCrowell और फिर भी हम जानते हैं कि समय अंतराल में डिफ़ॉल्ट रूप से कुछ परिमित मूल्य होता है। किस समय अंतराल और आप यह कैसे जानते हैं?
पायोत्र डोब्रोगोस्ट

9

आप ग्राहक या सर्वर पक्ष के लिए SSH की स्थापना कर सकते हैं:

ग्राहक की ओर

फ़ाइल: /etc/ssh/ssh_config

सामग्री:

Host *
ServerAliveInterval XX
ServerAliveCountMax YY

सर्वर साइड

फ़ाइल: /etc/ssh/sshd_config

सामग्री:

ClientAliveInterval XX
ClientAliveCountMax YY

इससे निकाला गया: http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html


6
उपयोगी है, लेकिन किसी भी तरह से सवाल का जवाब नहीं देता है।
बेज़मैन

6

ओपनएसएसएच एक शेल सत्र को समाप्त नहीं करेगा जो कुछ समय के लिए निष्क्रिय रहा है। यह कुछ ऐसा नहीं है जो ओपनएसएसएच करता है। एक निष्क्रिय शेल सत्र को समाप्त करना ओपनएसएसएच के विन्यास से असंबंधित है।

आप जो सेटिंग्स दिखा रहे हैं, वह टाइमआउट से संबंधित है जब कनेक्शन नीचे जाता है और रिमोट होस्ट पर शेल से संबंधित नहीं है और उपयोगकर्ता वहां क्या कर रहा है या क्या नहीं कर रहा है।

दूरस्थ होस्ट का शेल आलस्य के कुछ समय के बाद समाप्त हो सकता है (या किसी अन्य प्रक्रिया से मारा जा सकता है), लेकिन यह सर्वर और आपके SSH क्लाइंट पर SSH सेवा के कॉन्फ़िगरेशन से संबंधित नहीं है।

सम्बंधित:


sshdकॉन्फ़िगरेशन को डंप करने के लिए, "विस्तारित परीक्षण मोड" को रूट के रूप में उपयोग करें:

sshd -T

इस में प्रलेखित है मैनुअल (को देखकर यहां OpenBSD पर):sshd(8)OpenSSH_7.7, LibreSSL 2.7.2

-T

विस्तारित परीक्षण मोड। कॉन्फ़िगरेशन फ़ाइल की वैधता की जाँच करें, प्रभावी कॉन्फ़िगरेशन को stdout में आउटपुट करें और फिर बाहर निकलें । वैकल्पिक रूप से, एक या अधिक -Cविकल्पों का उपयोग करके कनेक्शन मापदंडों को निर्दिष्ट करके मैच नियम लागू किए जा सकते हैं।

यह विकल्प sshd2008 में OpenSSH 5.1 / 5.1p1 के लिए जोड़ा गया था ।


3

यदि निष्क्रियता की अवधि के बाद आवश्यकता एसएसएच कनेक्शन को बंद करने की है, तो गोले स्वयं टाइमआउट चर प्रदान करते हैं।

बैश के लिए:

TMOUT: यदि शून्य से अधिक मूल्य पर सेट किया गया है, तो TM बिल्ट को रीड बिलिन के लिए डिफ़ॉल्ट टाइमआउट माना जाता है। यदि टर्मिनल से इनपुट आ रहा है तो सेलेक्ट कमांड समाप्त हो जाती है यदि इनपुट TMOUT सेकंड के बाद नहीं आता है। एक इंटरैक्टिव शेल में, मूल्य को प्राथमिक संकेत जारी करने के बाद इनपुट की प्रतीक्षा करने के लिए सेकंड की संख्या के रूप में व्याख्या की जाती है। यदि इनपुट नहीं आता है तो बैश उस सेकंड की संख्या के इंतजार के बाद समाप्त हो जाता है।

इसे चलाकर परीक्षण करें TMOUT=10और कनेक्शन को बंद करने के लिए 10 सेकंड तक प्रतीक्षा करें।

Tsh के लिए:

ऑटोलॉगआउट शेल चर निष्क्रियता के कुछ मिनटों के बाद शेल को लॉग आउट या लॉक करने के लिए सेट किया जा सकता है।

टीसीएस में, दस मिनट के लिए समय निर्धारित करने के लिए वाक्यविन्यास है set autologout=10। यह मूल csh में काम नहीं करता है।


-2

यदि आप चाहते हैं कि टाइमआउट हर किसी के लिए 10 सेकंड का हो, तो सर्वर कॉन्फ़िगरेशन (sshd_config) के लिए निम्न कार्य करें:

ClientAliveInterval 10
ClientAliveCountMax 0

यदि आप स्थानीय क्लाइंट के लिए 10 सेकंड का समय समाप्त करना चाहते हैं, तो क्लाइंट कॉन्फिगर के लिए निम्नलिखित करें (ssh_config):

ServerAliveInterval 10
ServerAliveCountMax 0

यदि AliveCountMax पैरामीटर गैर-शून्य है, तो यह संभवतः काम नहीं करेगा क्योंकि सर्वर टाइमर को रीसेट करने का जवाब देगा (जब तक कि कोई कनेक्शन समस्या नहीं है)। आप ssh क्लाइंट को डिबगिंग चालू करके चलाकर इसे देख सकते हैं।

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