सवाल एसएसएच कनेक्शन टाइमआउट और गनोम टर्मिनल के ठंड से बचने के लिए रास्ता


जब मैं एसएसएच के माध्यम से कुछ सर्वरों से कनेक्ट करता हूं, तो यह टाइमआउट और टर्मिनल "फ्रीज" करता है (इनपुट स्वीकार नहीं करता है, डिस्कनेक्ट नहीं होता है, एसएसएच प्रक्रिया या कुछ भी मारने के लिए Ctrl-C नहीं कर सकता)।

यह उबंटू में है gnome-terminal हालांकि यह टर्मिनल इनपुट / आउटपुट को रोक रहा है, और यह गनोम टर्मिनल सॉफ्टवेयर के संचालन को प्रभावित नहीं करता है। इतनी कम बग के साथ gnome-terminal एसएसएच के साथ एक कष्टप्रद असंगतता की तुलना में।

तो, एसएसएच कनेक्शन से टर्मिनल को रोकने / वापस पाने का कोई तरीका है जो समय समाप्त हो गया है?


219
2018-01-20 23:33


मूल


के संभावित डुप्लिकेट एसएसएच सुरंग को भरोसेमंद कैसे रखें? - Murmel


जवाब:


sshd (सर्वर) कनेक्शन बंद कर देता है अगर यह कुछ समय के लिए क्लाइंट से कुछ भी नहीं सुनता है। आप अपने क्लाइंट को थोड़ी देर में सर्वर पर साइन-ऑफ-लाइफ सिग्नल भेजने के लिए कह सकते हैं।

इसके लिए विन्यास फाइल में है ~/.ssh/config। रिमोटहोस्ट को हर चार मिनट सिग्नल भेजने के लिए, अपने में निम्नलिखित डाल दिया ~/.ssh/config

Host remotehost
  HostName remotehost.com
  ServerAliveInterval 240

मेरे पास यही है ~/.ssh/config

सभी होस्टों के उपयोग के लिए इसे सक्षम करने के लिए:

Host *
  ServerAliveInterval 240

यह भी सुनिश्चित करना सुनिश्चित करें chmod 600 ~/.ssh/config, क्योंकि कॉन्फ़िगरेशन फ़ाइल को विश्व-पठनीय नहीं होना चाहिए।


247
2018-01-20 23:53



शब्द के साथ मेरी मदद करने के लिए धन्यवाद sblair, यह बहुत सराहना की है। मैंने "नहीं होना चाहिए" वापस "नहीं होना चाहिए" क्योंकि एसएसएच फ़ाइल की अनुमतियों की जांच करता है और यदि यह दुनिया या समूह पठनीय है तो यह विफल हो जाता है। - Ludwig Weinzierl
यही वह नहीं है जिसे ओपी ने पूछा था। निष्क्रियता के कारण वह लात नहीं जा रहा है। वह कनेक्ट करने का प्रयास कर रहा है और उसका टर्मिनल ठंडा हो रहा है। - Cerin
यह कहां है ~/.ssh/config? - User
@User '~ /' आपके घर फ़ोल्डर का प्रतिनिधित्व करता है। '.shsh' आपके घर फ़ोल्डर में एक फ़ोल्डर है। - wkm
यदि आपका कनेक्शन वास्तव में खो रहा है तो यह बेकार है ... - so12311


दबाएँ दर्ज, ~,  एक जमे हुए सत्र से डिस्कनेक्ट करने के बाद एक के बाद।

एसएसएच मैन पेज में "एस्केप कैरेक्टर" अनुभाग अंतर्निहित विवरण बताता है।


234
2018-01-20 23:44



यह उत्तर मुझे प्रश्न का अधिक सटीक उत्तर देने के लिए प्रतीत होता है, और किसी भी मामले में, वह उत्तर था जिसे मैं ढूंढ रहा था। - CoatedMoose
ध्यान दें कि आपको लाइन को अपूर्ण करने की आवश्यकता है EscapeChar ~ में /etc/ssh/ssh_config (या ~/.ssh/ssh_config आप चाहें तो)। - Aditya M P
@adityamenon नहीं, EscapeChar ~ पहले से ही अंतर्निहित डिफ़ॉल्ट है। - Peter Eisentraut
@ मार्क सवाल पूछता है "एसएसएच कनेक्शन से टर्मिनल वापस पाने के लिए एक तरीका है जो समय समाप्त हो गया है? "मेरा जोर। - CoatedMoose
घटना हालांकि यह सवाल के संदर्भ में गलत था, यह वही है जो मैं चाहता था। - Subin Sebastian


यहां तक ​​कि यह आपके प्रश्न का सीधा जवाब नहीं है, यह आपके पास होने वाली समस्या से अत्यधिक संबंधित है। कनेक्शन को जीवित रखने की कोशिश करने के बजाय (सभी कनेक्शन अंत में मर जाते हैं) आप टर्मिनल मल्टीप्लेक्सर्स का उपयोग कर सकते हैं screen तथा tmux जो सत्र में जीवित रहता है भले ही आपका टर्मिनल डिस्कनेक्ट हो जाए।

अनिवार्य रूप से जब आप एसएसएच सर्वर में लॉगिन करते हैं तो आप तुरंत चलते हैं screen जो एक नया सत्र बनायेगा और संलग्न करेगा:

$ screen

फिर आप आगे बढ़ते हैं और अपना काम खोल के साथ करते हैं जैसा कि आप आमतौर पर करते हैं। अब यदि कनेक्शन गिर जाता है, जब आप ऑनलाइन वापस आ सकते हैं और एसएसएच पर सर्वर से पुनः कनेक्ट कर सकते हैं, तो आपको मौजूदा सत्रों की एक सूची मिलती है:

$ screen -ls

सत्र में दोबारा जुड़ने के लिए:

$ screen -r <session>

कहा पे <session> पीआईडी ​​या सत्र का नाम है। आपको अपने सत्र से दोबारा जोड़ा जाएगा और आप कहां से छोड़े गए हैं से जारी रख सकते हैं!

आप सत्र को अलग भी कर सकते हैं और सटीक बिंदु से उठाए जाने के लिए घर से फिर से कनेक्ट कर सकते हैं जहां आपने छोड़ा था। आपके द्वारा उपयोग किए जाने वाले सत्र को अलग करने के लिए C-a के बाद C-d (thats Control + A और फिर Control + D)।

वहाँ है सरल ऑनलाइन ट्यूटोरियल भी।

का उपयोग करते हुए screen तथा tmux रिमोट सर्वर पर एक माना जाता है सर्वश्रेष्ठ प्रणालियां और है अत्यधिक सिफारिशित। कुछ लोग जहां तक ​​जाते हैं screen उनके डिफ़ॉल्ट लॉगिन खोल के रूप में, इसलिए जब वे कनेक्ट होते हैं तो वे तुरंत एक नया शुरू करते हैं screen सत्र।


38
2017-07-03 01:28



मोश का उपयोग करने का एक और विकल्प है: mosh.mit.edu - Zombies
यह विशेष रूप से उपयोगी होता है यदि आप हॉटस्पॉट या वाईफ़ाई का उपयोग कर रहे हैं जो कभी-कभी बाहर निकलता है। - Randall


संलग्न करने का प्रयास करें -o ServerAliveInterval=30 आपके कनेक्शन स्ट्रिंग के लिए (30 30 सेकंड का मतलब है और निश्चित रूप से समायोजित किया जा सकता है)


11
2018-02-06 14:13





आप एसएसएच सर्वर पक्ष से एक निष्क्रिय टाइमआउट अंतराल भी सेट कर सकते हैं:

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

सामग्री:

ClientAliveInterval XX
ClientAliveCountMax YY

यह क्लाइंट सेटिंग के समान ही काम करता है, लेकिन क्लाइंट की बजाय सर्वर से नल पैकेट भेजे जाते हैं।

इससे निष्कर्षित:

http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html


5
2018-02-12 22:45





उन लोगों के लिए जो क्लाइंट को पहली जगह से बाहर निकलने से रोकना चाहते हैं।

आप सेट करने की कोशिश कर सकते हैं ConnectTimeout 0 विन्यास फाइल में। मान 0 का मतलब है कि बंद होने तक कनेक्शन अनिश्चित काल तक जीवित रखा जाएगा।

आपकी कॉन्फ़िगरेशन (या ssh_config) फ़ाइल इस तरह दिखाई दे सकती है:

Host *
   ConnectTimeout 0

1
2017-12-17 02:19