जब मैं लॉक करता हूं तो मैं ssh से कैसे टूट सकता हूं?


380

मैं अक्सर स्कूल से घर पर अपने बॉक्स में जाता हूं, लेकिन आमतौर पर जब मैं कक्षाएं बदलता हूं और मेरा कंप्यूटर निलंबित हो जाता है, तो पाइप टूट जाएगा। हालाँकि, ssh केवल ताले लगाता है - Ctrl+ c, Ctrl+ zऔर Ctrl+ dका कोई प्रभाव नहीं है।

यह मेरे टर्मिनल को फिर से शुरू करने के लिए कष्टप्रद है, और एक नई स्क्रीन विंडो को बंद करने और फिर से बनाने के लिए और भी अधिक कष्टप्रद है।

तो मेरा प्रश्न, क्या ssh को ठीक से मरने का एक आसान तरीका है (यानी जब पाइप "सामान्य रूप से विफल हो जाता है" तो यह टूटे हुए पाइप के बारे में संदेश के साथ बाहर निकल जाएगा)? या मुझे यह पता लगाना है कि पीआईडी ​​क्या है और इसे मैन्युअल रूप से मारना है?


अगर मैं एक सक्रिय SSH सत्र के साथ डिस्कनेक्ट हो गया, तो यह जमा देता है। मैं बस इसे मारता हूं और एक नया सत्र शुरू करता हूं। कोई जानकारी नहीं खोई है क्योंकि मैं GNU स्क्रीन का उपयोग करता हूं।
लेकेनस्टाइन

मैं भी - स्क्रीन सबसे अच्छा है। लेकिन यह अभी भी परेशान है screen -x: P
वेन वर्नर

[mosh] (mosh.mit.edu) इस समस्या से बचने के लिए एक स्वच्छ विकल्प है। यह आंतरायिक इंटरनेट कनेक्टिविटी के साथ भी "जुड़ा रहता है"।
jaynp

@jaynp (दो मिनट पहले से) mosh का उपयोग करने का दोष यह है कि मुझे नहीं पता कि इसे कैसे डिस्कनेक्ट किया जाए। मैं एक दूरस्थ होस्ट (एक IRC बाउंसर, सॉर्ट के रूप में) पर एक tmux + irssi सत्र का उपयोग कर रहा हूं और मैं कभी-कभी डिस्कनेक्ट करना चाहता हूं (जबकि tmux + irssi को चालू रखते हुए) और मैंने <<+ + + के साथ किया था। SSH का उपयोग करना, लेकिन mosh का उपयोग करने से काम नहीं चलेगा।
पावेल Paमेरदा

जवाबों:


534

सामान्य कुंजियाँ sshसत्र के दौरान अग्रेषित की जाती हैं , इसलिए उनमें से कोई भी काम नहीं करेगा। इसके बजाय, भागने के दृश्यों का उपयोग करें। वर्तमान सत्र के हिट को मारने के लिए बाद में Enter ↵, ~, .

इन भागने दृश्यों के अधिक के साथ सूचीबद्ध किया जा सकता Enter ↵, ~, ?:

Supported escape sequences:
  ~.  - terminate session
  ~B  - send a BREAK to the remote system
  ~R  - Request rekey (SSH protocol 2 only)
  ~#  - list forwarded connections
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

आप टकराने से एस्केप दृश्यों की सूची को बंद कर सकते हैं enter

ध्यान दें कि मारने के ~~कारण इंटरसेप्ट करने के बजाय sshभेजने के कारण ~, आप N नेस्टेड sshकनेक्शनों को ~ N बार मारकर संबोधित कर सकते हैं । (यह केवल ~उस s पर लागू होता है जो सीधे a का अनुसरण करता है enter।) यह कहना है कि enter~~~~~.एक sshसत्र 5 परतों को समाप्त करता है और अन्य 4 को बरकरार रखता है।


48
कीबोर्ड लेआउट के लिए जहां ~एक मृत कुंजी है , कुंजी अनुक्रम है Enter ~ Space .
सोरेन लोर्बोर्ग

1
मैंने भागने के दृश्यों को और जोड़ा है जो उपयोगी हो सकते हैं। :)
gertvdijk

5
ध्यान दें कि आप लाइन uncomment की जरूरत EscapeChar ~में /etc/ssh/ssh_config(या ~/.ssh/ssh_configअगर आप पसंद करते हैं)।
आदित्य एमपी

6
@ हाईटेक कंप्यूटरजेक Enter ~ ~ .चूंकि आपके एसएसएच सत्र के माध्यम से ~ ~शाब्दिक भेजता है ~, दूसरा एसएसएच सत्र इसे एकल टिल्ड के रूप में प्राप्त करेगा और .भागने के भाग के रूप में व्याख्या करेगा । 5 वें नेस्टेड ssh सत्र में भेजने के लिए, बस अपने भागने के क्रम में 5 टिल्ड का उपयोग करें।
स्कोर_उंडर

4
जीवन बदल रहा है;)
आर्टम

54

आप कनेक्शन के मुद्दों पर ठंड से रोकने के लिए SSH के लिए एप्लिकेशन-स्तर के रख-रखाव को सेटअप करना चाह सकते हैं। मेरा यह शामिल है:~/.ssh/config

Host *
ServerAliveInterval 15
# ServerAliveCountMax 3

यह ssh क्लाइंट को हर 15 सेकंड में एप्लिकेशन-लेवल कीप-अलाइव भेजता है। जब भी उनमें से तीन लगातार विफल होते हैं (डिफ़ॉल्ट ServerAliveCountMax), क्लाइंट कनेक्शन को त्रिशंकु के रूप में मानता है और इसे बंद कर देता है।

अन्य विकल्प के विरोध में TCPKeepAlive, यह एन्क्रिप्टेड चैनल के भीतर जांचा जाता है और खराब नहीं होता है।


यह ध्यान दिया जा रहा है कि वे रख-रखाव भी मदद करते हैं, उह, लंबे समय से निष्क्रिय कनेक्शन को जीवित रखते हैं, यानी आपको आधे-बंद टीसीपी सत्रों को घंटों तक लटकाए रखने से रोकते हैं ।

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


3
सुरक्षा को ध्यान में रखते हुए। आप ड्रिंक कर सकते हैं और ssh sessio को खुला छोड़ सकते हैं और आपका लैब पार्टनर जो आपने पिछले 20 वर्षों में साथ काम किया है, हो सकता है कि वह आपके सत्र का उपयोग सर्वर को हाइजैक करने और उसे नष्ट करने में करे ... जबकि आप अपने 10 मिनट के ब्रेक में पी रहे थे।
लुइस अल्वारादो

2
@CYREX, एह? और डिफ़ॉल्ट विकल्प द्वारा कैसे बंद किया जा सकता है जो आपको अनुचित लैब पार्टनर होने से रोकता है? %)
ulidtko

1
@ulidtko: क्या ServerAliveInterval1 पर सेट न करने का कोई कारण है ताकि किसी खोए हुए कनेक्शन का तुरंत पता चल जाए?
krlmlr

2
@gertvdijk: धन्यवाद। मेरे लिए, यह Hostलाइन के बिना भी काम करता है । इसके अलावा, "उन्नत एन्क्रिप्शन स्टैंडर्ड जैसे आधुनिक सिफर्स वर्तमान में ज्ञात-प्लेनटेक्स्ट हमलों के लिए अतिसंवेदनशील नहीं हैं।" (आपके द्वारा जोड़े गए लिंक से) ...
krlmlr

2
आप एसएसएच को मोश (मोबाइल शेल) से भी बदल सकते हैं। Mosh SSH के माध्यम से सर्वर से जुड़ता है, लेकिन फिर एक यूडीपी आधारित चैनल स्थापित करता है जो कनेक्शन समस्याओं के खिलाफ हल करने वाला होता है। मोश में एक स्थानीय प्रतिध्वनि भी होती है, इसलिए आप देख सकते हैं कि आप क्या टाइप कर रहे हैं, भले ही सर्वर जवाब नहीं दे रहा हो। जब कीस्ट्रोक्स डिलीवर होते हैं, तो Mosh इकोर्ड टेक्स्ट को चिह्नित करता है। mosh.mit.edu
पास्कल रोज़िन

41

जैसा कि geekosaur के जवाब में कहा गया है, एस्केप सीक्वेंस ~.कनेक्शन को समाप्त कर देगा।

एस्केप अनुक्रमों की पूरी सूची और वे क्या करते हैं टाइप करके प्रदर्शित किया जा सकता है ~?:

Supported escape sequences:
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

मैं पलायन अनुक्रमों की सूची को कैसे बंद करूं?
क्रिस्चियनप

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