नेटवर्क स्थान के साथ मेरा ssh समय समाप्त क्यों होता है?


15

जब मैं घर से हमारे कार्यालय सर्वर (जो फेडोरा 10 चलाते हैं) में से एक में ssh'ed कर रहा हूं, तो मेरा सत्र गतिविधि की काफी कम अवधि (5 मिनट या तो) के बाद समाप्त हो जाता है। मैंने TcpKeepAliveग्राहक पक्ष पर उपयोग करने की कोशिश की है , बिना किसी प्रभाव के।

मेरी समझ में यह बात नहीं है कि यदि मैं कंपनी लैन पर कार्यालय में हूं, तो मैं पूरे दिन सत्र को निष्क्रिय कर सकता हूं, बिना समय निकाले, इसलिए व्यवहार मेरे स्थान पर निर्भर होने लगता है।

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

अद्यतन - डेव डॉगर ने मेरे ServerAliveIntervalसाथ TcpKeepAlive=noकाम करने के लिए सेट को गैर-शून्य पर उपयोग करने का सुझाव दिया। कुछ अन्य उत्तरों के बारे में ClientAlive... मैक OSX SSH क्लाइंट द्वारा सेटिंग्स को स्वीकार नहीं किया जाता है।

जवाबों:


6

इस समस्या पर यहाँ एक अच्छा राइटअप है

वे सलाह देते हैं:

ssh -o TCPKeepAlive=yes

या:

ssh -o TCPKeepAlive=no -o ServerAliveInterval=15

हालाँकि, मेरे पास अपने कार्य स्थल पर एक मुद्दा है, जहां मैं सत्रों से अलग हो जाता हूं, जहां घर पर वे ठीक हैं। मेरा मानना ​​है कि मेरा फ़ायरवॉल (सोनिकवैल) टीसीपीकेपीलाइव के साथ बह सकता है, शायद एनएटी के कारण।

मेरा SSH क्लाइंट, SecureCRT, सौभाग्य से एक "NO-OP" प्रोटोकॉल के लिए एक विकल्प है, जो मुझे विश्वास है कि मूल रूप से एक कमांड भेजता है जो सर्वर के लिए कुछ भी नहीं करता है। इसे मैन्युअल रूप से सक्षम करके मैं जुड़ा रह सकता हूं। यकीन नहीं है कि MacOSX टर्मिनल क्लाइंट के पास क्या है। कमांड लाइन पर "एनओ-ओपी" को लागू करने के तरीके पर एक राइटअप है

अंत में, आप अपने वास्तविक टीसीपी कनेक्शन को देखने के लिए विंडसरक या अन्य स्निफर का उपयोग करना चाह सकते हैं ताकि यह पता चल सके कि इसके साथ क्या हो रहा है। यह देखने का अंतिम तरीका होगा कि क्यों यह अभी भी कभी-कभी डिस्कनेक्ट हो रहा है।


धन्यवाद, डेव - ServerAliveInterval विकल्प ने बहुत अच्छा काम किया।
गारेथ_बोल्स

@ मैंने सुना था कि कुछ सर्वर इस प्रथा पर भड़क जाते हैं क्योंकि यह या तो (ए) सुरक्षा जोखिम हो सकता है, या (बी) अनुचित सर्वर लोड हो सकता है। क्या इन चिंताओं में से कोई भी मान्य है, IYHO?
जोनाथन डे

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

@Dave: मैंने इस कमांड में प्रवेश किया लेकिन निम्नलिखित प्राप्त करें, उपयोग: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c bipher_spec] [-D [bind_address:] port] [-e भागने_चाह] [ff config] I pkcs11] [-i identity_file] [-L [bind_address:] port: host: hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-R [-R] bind_address:] port: host: hostport] [-S ctl_path] [-W host: port] [-w local_tun [: Remote_tun]] [उपयोगकर्ता @] hostname [कमांड]
user1050619

इस फिक्स ने PuTTY के लिए भी काम किया। एकमात्र विकल्प जो मुझे सेट करना था, वह था कनेक्शन में -> सेकेंडिव के बीच सेकंड्स: 15. SSH सत्र 8 घंटे (Comcast) के लिए जीवित और ठीक है, जबकि यह आमतौर पर <30 मिनट में डिस्कनेक्ट हो जाता है।
Dan Dascalescu

2

यह शायद इसलिए है क्योंकि जब आप घर से कनेक्ट कर रहे होते हैं तो आप फायरवॉल से गुजरते हैं जो कि थोड़े समय के बाद टीसीपी सत्र को बंद कर देते हैं। लेकिन TcpKeepAlive को इससे बचना चाहिए। क्या आपने क्लाइंट पक्ष या सर्वर साइड पर TcpKeepAlive सक्षम किया है?


मैंने ग्राहक पक्ष पर TcpKeepAlive किया (मेरे ~ / .ssh / config में) - मैंने सोचा कि यह स्थानीय फ़ायरवॉल मुद्दों को संबोधित करेगा, लेकिन यह अभी भी समय से बाहर है।
गारेथ_बोल्स

डिफ़ॉल्ट रूप से यह सर्वर साइड पर "ऑन" है, लेकिन यह देखने के लिए sshd_config देखें कि क्या यह अक्षम नहीं हुआ है।
त्रिज्या

कुछ फ़ायरवॉल एक निश्चित समय के बाद टीसीपी कनेक्शन को काट देते हैं जब वे निष्क्रिय नहीं होते हैं।
टॉमऑनटाइम

कुछ फ़ायरवॉल एक निश्चित समय के बाद टीसीपी कनेक्शन को काट देते हैं जब वे निष्क्रिय नहीं होते हैं। इसका पता लगाने का तरीका यह देखना है कि क्या आप लगातार डिस्कनेक्ट हो जाते हैं।
टॉमऑनटाइम

यहाँ वे सेटिंग्स हैं जिन्हें मैं ठीक करता था: TCPKeepAlive no, ClientAliveInterval 300, ClientAliveCountMax 3
मैट सिमन्स

2

मुझे यह सब मेरे कॉमकास्ट कनेक्शन पर मिलता है। समस्या यह है कि आपके नेटवर्क पथ में कॉन्फ़िगर किए गए टाइमआउट के लिए आपके SSH क्लाइंट का जीवंत अस्तित्व बहुत लंबा है। आप लिनक्स पर हैं, तो आप संशोधित कर सकते हैं ServerAliveIntervalऔर ServerAliveCounterउनके डिफ़ॉल्ट से कम आती है मान। यह मान सेकंड में सेट किया गया है। सिस्टम-वाइड कॉन्फ़िग फ़ाइल (सामान्यतया) में पाई जाती है /etc/ssh/ssh_config। उन दोनों को सेट करना और TcpKeepAliveआपके कनेक्शन को चालू रखने में मदद करना चाहिए।


1

जैसे त्रिज्या कहता है, कुछ राज्य-पूर्ण फ़ायरवॉल निश्चित (आमतौर पर कॉन्फ़िगर करने योग्य) समय के बाद एक कनेक्शन को 'भूल जाते हैं' और कनेक्शन के लिए आगे संचार की अनुमति नहीं देंगे; वे अपेक्षा करते हैं कि कनेक्शन टीसीपी SYN के साथ शुरू हो (मैं यहां आपके SSH संचार का संदर्भ देता हूं)।

एक और संभावना है। आपके घर और कार्यालय के बीच नेटवर्क पथ के नुकसान (पैकेट प्रकार के) हो सकते हैं। जब आप SSH क्लाइंट पर टाइप करने का प्रयास करते हैं, यदि आपका लिंक कुछ समय के लिए रुक गया है, तो क्लाइंट दे सकता है और विफल हो सकता है।

क्लाइंट पर मुख्य विन्यास पहले मामले को यहां संभाल लेगा लेकिन दूसरे मामले में मदद नहीं कर सकता। फ़ायरवॉल आमतौर पर आपके कार्यालय परिधि पर होगा और इसलिए यह विन्यास योग्य हो सकता है। यह भी पहले बिंदु पर मदद करेगा।

यह जांचने के लिए कि क्या आपके पास रुक-रुक कर होने वाले लिंक नुकसान हैं, आप अपने क्लाइंट मशीन से पृष्ठभूमि में सक्रिय 'पिंग' रख सकते हैं।


0

आप अपनी ~/.ssh/configफ़ाइल में अन्य लोगों द्वारा बताई गई सेटिंग्स को भी चूक के रूप में जोड़ सकते हैं , इसलिए आपको उन्हें sshहर बार पास करने की ज़रूरत नहीं है :

nano ~/.ssh/config और जोड़:

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