थोड़ी देर के लिए निष्क्रिय होने पर SSH को डिस्कनेक्ट करने से कैसे रोकें


51

मेरे पास एक मशीन के लिए एक ssh कनेक्शन है जो उस मशीन द्वारा बिना किसी उपयोगकर्ता इनपुट के 30 मिनट के बाद डिस्कनेक्ट हो जाता है। हालांकि, अगर मैं कुछ शुरू करता हूं, तो topकनेक्शन जीवित रहता है। चूंकि यह एक ग्राहक की मशीन है, मैं उस मशीन के SSH सर्वर को फिर से कॉन्फ़िगर नहीं कर सकता। इसलिए मैं आलस्य का स्वचालित रूप से पता लगाने और कुछ शुरू करने का एक तरीका ढूंढ रहा हूं top। बाश के लिए एक "स्क्रीनसेवर" की तरह।

मुझे पता है कि मैं ऐसा कर सकता हूं screen, लेकिन दुर्भाग्य screenसे स्थापित नहीं है, और मैं सॉफ़्टवेयर स्थापित नहीं कर सकता। इसलिए मुझे बश ऑफर का उपयोग करने की आवश्यकता है।

यह स्पष्ट करने के लिए: मैं एक समाधान की तलाश में हूं जिसे मैं एक बार लॉग इन करने के बाद शुरू करता हूं, और फिर मैं उस टर्मिनल का उपयोग करना चाहता हूं, दो घंटे बाद वापस आना और काम करना जारी रखना, बिना चलने से पहले कुछ भी लिखना। इसके अलावा, मैं सुरंग के सामान की तलाश में नहीं हूं (इसके लिए मैं महान उपकरण sshuttle की सिफारिश करता हूं )

कोई विचार?


स्पष्ट स्क्रीन बनाने के लिए बस एक त्वरित नोट और Keepalive एक ही बात नहीं है: उदाहरण के लिए, यदि ssh क्लाइंट या सर्वर गेस्ड डिस्कनेक्ट हो गया है, तो आपके ssh सत्र को बंद कर दिया जाएगा भले ही आपने KeepAlive चालू किया हो, जबकि स्क्रीन शेल समाप्त नहीं होगा ।
MariusMatutiae

जवाबों:


78

यह स्पष्ट करने के लिए: मैं एक समाधान की तलाश में हूं जिसे मैं एक बार लॉग इन करने के बाद शुरू करता हूं, और फिर मैं उस टर्मिनल का उपयोग करना चाहता हूं, दो घंटे बाद वापस आना और काम करना जारी रखना, बिना चलने से पहले कुछ भी लिखना।

समस्या यह है कि कुछ है (आमतौर पर एक फ़ायरवॉल या लोड-बैलेंसर), जो बेकार सत्रों को छोड़ रहा है। यदि आप सत्र रखवाले को कॉन्फ़िगर करते हैं, तो रखवाले नेटवर्क उपकरणों को सत्र को निष्क्रिय मानने से रोकेंगे।

लिनक्स / यूनिक्स / साइगविन ओपनएसएसएच फिक्स :
सबसे सरल फिक्स एसएचएस क्लाइंट कीपैलिव्स को सक्षम करना है; यह उदाहरण हर 60 सेकंड में एक ssh रखने का भेजेगा:

ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>

यदि आप इसे अपने सभी सत्रों पर सक्षम करना चाहते हैं, तो इसे अपने /etc/ssh/ssh_configया ~/.ssh/config:

ServerAliveInterval 60

अधिक जानकारी के लिए, मैनपेज देखेंssh_config

पोटीन फिक्स :

इसे अपने PuTTY "डिफ़ॉल्ट सेटिंग्स" में सहेजें ...

  • कनेक्शन पर क्लिक करें
  • "रखवाले के बीच सेकंड" में 60 टाइप करें

putty_screenshot


21

माइक पेनिगटन के जवाब के अलावा , मैं आपको ServerAliveCountMaxभी अवगत कराना चाहूंगा ।

  • ServerAliveIntervalएक हर एक्स सेकंड (डिफ़ॉल्ट है KeepAlive भेज देंगे 0 , जो इस सुविधा को अक्षम कर देता है, तो कुछ और करने के लिए सेट नहीं)।
  • ServerAliveCountMaxयदि कोई प्रतिसाद नहीं मिला तो ऐसा कई बार किया जाएगा । का डिफ़ॉल्ट मान ServerAliveCountMaxहै 3 (देखें मैनपेज ssh_config )।

उदाहरण: यदि आप 60 पर सेट ServerAliveIntervalहोते हैं और जैसा है वैसा ही छोड़ देते हैं , इसका मतलब यह है कि रखने से पहले केवल 3 मिनट तक इंतजार करना होगा ।ServerAliveCountMax3 * 60 = 180 seconds =

कनेक्शन को जीवित रखने के लिए 2 घंटे की कोशिश करने के लिए इसे बढ़ाने के लिए, आप कर सकते हैं:

प्रति आदेश:

इसलिए आपको सेट करने पर विचार करना चाहिए

ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>

लगातार:

इसे लगातार लिखने के लिए इसे /etc/ssh/ssh_config(सिस्टम-वाइड ~/.ssh/configलागू होगा ) या (केवल-उपयोगकर्ता लागू करेगा ) लिखें :

ServerAliveInterval 60
ServerAliveCountMax 120

ध्यान दें

जैसा कि अव्यवस्थित रूप से सही ढंग से बताया गया है , यह वह नहीं हो सकता है जो आप चाहते हैं, आपकी स्थिति पर निर्भर करता है:

  • यदि आप जल्दी से सत्र को समाप्त करना चाहते हैं जैसे ही सर्वर अब जवाब नहीं देता है, तो आपको निम्न मान चुनना चाहिए ServerAliveCountMax
  • आप और अधिक एक पहले से ही स्थापित कनेक्शन रखने में रुचि रखते हैं (उदाहरण के लिए आप ट्रेन से जाने के लिए और उच्च प्रतीक्षा अवधि है), तो आप के लिए एक उच्च मूल्य का चयन करना चाहिए ServerAliveCountMaxअनुमति देने के लिए sshकनेक्शन पैर जमाने की कोशिश कर रखने के लिए।

यह भी देखें:


1
मुझे क्षमा करें, लेकिन यह गलत है। ServerAliveCountMaxसर्वर जीवित संदेशों की मात्रा को निर्दिष्ट करता है जो सर्वर से वापस कोई संदेश प्राप्त किए बिना भेजा जा सकता है। यदि आप चाहते हैं sshकि आप वास्तव में स्थापित करना चाहिए बाहर निकलने के लिए यह जमा के बाद (ताकि आप इसे पुनः आरंभ कर सकते हैं) ServerAliveCountMaxएक करने के लिए कम संख्या। लिंक किए गए मैनपेज ओपी देखें ।
नापसंद करें

@ मुझे इस बारे में थोड़ा सोचना था, लेकिन मुझे लगता है कि आप संदर्भ के आधार पर सही हैं, इसलिए मैंने संदर्भ पर जोर देने के लिए एक नोट जोड़ा।
मूरमेल

2

मैं Mobaxterm का उपयोग कर रहा हूं और इस समस्या से भी मिला हूं। Mobaxterm क्लाइंट को निष्क्रिय रखने पर ग्राहक को जीवित रखने के विकल्प के साथ भी जहाज करता है। के पास जाओ Settings -> Configuration -> SSH। अनुभाग शीर्षक है SSH settings, विकल्प की जांच करें SSH keepalive। तब यह समस्या गायब हो जानी चाहिए।

यहाँ छवि विवरण दर्ज करें


नि: शुल्क संस्करण में "SSH keepalive" काम करता है ... मेरे सत्र इस विकल्प को ऊपर की जाँच के बाद भी काट दिया जा रहा है
samshers

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