एक कमांड में सभी SSH कनेक्शनों से बाहर निकलें और PuTTY को बंद करें


19

क्या सभी एसएसएच कनेक्शनों को वापस करने और "एक शॉट" में PuTTY को बंद करने का एक तरीका है ? मैं विंडोज 7 में काम करता हूं और विभिन्न लिनक्स मेजबानों के लिए SST के लिए PuTTY का उपयोग करता हूं।

अपने आप को काम करने के तरीके का एक उदाहरण:

SSH to host1 with PuTTY...
banjer@host1:~> #...doin some work...ooh! need to go check something on host8...
banjer@host1:~> ssh host8
banjer@host8:~> #...doin some work...OK time for lunch. lets close putty...
banjer@host8:~> exit
banjer@host1:~> exit
Putty closes.

ऊपर, किसी भी तरह से host8 से एक शॉट में PuTTY को बंद करने के लिए? कभी-कभी मैं खुद को 5 या 10 मेजबान तक गहरा पाता हूं। मुझे पता है कि मैं PuTTY विंडो को बंद करने के लिए X पर क्लिक कर सकता हूं, लेकिन मुझे यह सुनिश्चित करना पसंद है कि मेरे SSH कनेक्शन एग्जिट कमांड का उपयोग करके ठीक से बंद हो जाएं। मुझे यह भी पता है कि मैं आलस को बढ़ाने के लिए सुझाव दे रहा हूं। मैं अभी इसे "मैं और अधिक कुशल कैसे हो सकता हूं" के रूप में लिखूंगा।


6
सीधे नहीं कि आप क्या पूछ रहे हैं लेकिन कैसे सिर्फ ctrl+dकई बार दबाने के बारे में ?
उलरिच डांगल

@UlrichDangel मैंने पहले कभी ऐसा नहीं किया है, लेकिन जल्दी से कनेक्शन वापस करने का एक त्वरित तरीका भी है।
बंजर

2
क्या आप वास्तव में ssh सत्र 5 से 10 के स्तर को गहरा कर रहे हैं? क्या आपको लगता है कि एक जटिल सुरंग बना रहा है जो उन सभी होस्टों के माध्यम से आपके ssh सत्र में सभी पैकेटों को बाउंस करता है? क्या आप समस्या को दूर करके ssh सत्र नहीं कर सकते हैं?
jw013

@ jw013 नहीं, मुझे इसका एहसास नहीं था, लेकिन समझ में आता है। ईमानदारी से, 5-10 का स्तर एक अतिशयोक्ति था, लेकिन मैं अपने सवाल का चित्रण करने की कोशिश कर रहा था "कैसे एक में गिर गया पोटी से बाहर निकलने के लिए सफाई से बाहर निकलना।"
बंजर

जवाबों:


29

sshकनेक्शन समाप्ति भागने अनुक्रम का उपयोग करके देखें ।

में sshसत्र, प्रवेश ~.(डॉट टिल्ड)। जब आप उन्हें टाइप करते हैं तो आप वर्ण नहीं देखेंगे, लेकिन सत्र तुरंत समाप्त हो जाएगा।

$ ~.
$ Connection to me.myhost.com closed.  

से man 1 ssh

The supported escapes (assuming the default ‘~’) are:
 ~.      Disconnect.
 ~^Z     Background ssh.
 ~#      List forwarded connections.
 ~&      Background ssh at logout when waiting for forwarded 
         connection / X11 sessions to terminate.
 ~?      Display a list of escape characters.
 ~B      Send a BREAK to the remote system (only useful for SSH protocol
         version 2 and if the peer supports it).
 ~C      Open command line.  Currently this allows the addition of port 
         forwardings using the -L, -R and -D options (see above). It also
         allows the cancellation of existing remote port-forwardings using 
         -KR[bind_address:]port.  !command allows the user to execute a 
         local command if the PermitLocalCommand option is enabled in
         ssh_config(5).  Basic help is available, using the -h option.
 ~R      Request rekeying of the connection (only useful for SSH protocol 
         version 2 and if the peer supports it).

बहुत अच्छा! किसी भी तरह से ~.एक उपनाम या कार्य करने के लिए? जैसे नाम याद रखना आसान है exitall। अब मैं बहुत ज्यादा रास्ता पूछ रहा हूँ :)। मैंने कुछ चीजों की कोशिश की, ~/.bashrcलेकिन मिलता है -bash: ~.: command not found। मुझे लगता है कि बैश इसे एक स्ट्रिंग के रूप में देखता है न कि कीबोर्ड से सीधे आने वाला एक एस्केप सीक्वेंस।
बंजर

मुझे ctrl+dसमाधान भी पसंद है , लेकिन यह मेरे प्रश्न का अधिक सीधे उत्तर देता है। सबको शुक्रीया।
बंजर

3
@ बैंजर बैश कभी नहीं देखता ~., यह sshखुद ही संभाला है ।
गाइल्स का SO- बुराई से रोकना '

@ गिल्स गोथा, समझ में आता है।
बंजर

और इसकी कोई गारंटी नहीं है कि PuTTY भी ऐसा करता है। CLI sshक्लाइंट को इस तकनीक की आवश्यकता है क्योंकि यह CLI है। PuTTY एक GUI एप्लिकेशन है और GUI पर इस सामान को करने के लिए और अधिक उपयोगकर्ता के अनुकूल तरीके हैं।
एलेक्सजॉन

12

बस दबाएं CtrlDऔर यह आपको ctrl पकड़ के लिए लॉग आउट करेगा और विंडो के गायब होने तक "d" दबाएं।


1
अफसोस की बात है, यह सार्वभौमिक रूप से काम नहीं करता है। संपादक या अन्य पूर्ण स्क्रीन टूल चलाने वाले किसी भी सत्र को अनदेखा करने की संभावना है EOT। और यहां तक ​​कि bashएक कमांड लाइन के बीच में इसे अनदेखा कर देगा। इसे स्वयं आज़माएँ: एक ही अक्षर लिखें और कोशिश करें Ctrl-D
एलेक्सिस

Ctrl + D क्या करता है, मेरा मतलब है कि यह सुरक्षित रूप से मौजूद है या सिर्फ प्रक्रिया को मारता है?
AMB

यह सुरक्षित रूप से बाहर निकलता है। यह एक शेल शॉर्टकट है जो 'एग्जिट' टाइप करने और एंटर दबाने के समान है।
जो

दरअसल मेरा (विंडोज़ git bash & ubuntu bash) एक अंक जारी करता है logout
११:१६

हां, मेरा मानना ​​है कि एग्जिट लॉगआउट को भी कहते हैं क्योंकि ssh कनेक्शन में लॉग इन सत्र नहीं होते हैं।
जो


2

एक और तरीका है बनाने के लिए है functionके लिए ssh:

   function ssh(){ /usr/bin/ssh $@ ; exit ; } 

दुर्भाग्य से यह हमेशा कनेक्शन को बंद करेगा और रिमोट सिस्टम पर काम खत्म करने के बाद कंसोल से लॉगआउट करेगा।

ध्यान दें, कि आपको अपने सभी सर्वरों पर ऐसे कार्य करने की आवश्यकता है, अन्यथा यह हैक काम नहीं करेगा। Btw आप हमेशा ~ / .bashrc या ~ / .whatever_shell_you_use_rc में फ़ंक्शन डाल सकते हैं।

यह उथल-पुथल के रास्ते की तुलना में थोड़ा गंदा हैक दिखता है।


functionPOSIX नहीं है - बस कीवर्ड हटाएं, और आपको $@ठीक से उद्धृत करने की आवश्यकता है , या आपके तर्क शब्द विभाजन (खराब) के बाद पारित हो जाएंगे।
क्रिस डाउन

2

या जब आप किसी अन्य होस्ट के लिए कूदते समय execअपनी शेल प्रक्रिया को बदलने के लिए उपयोग कर सकते हैं ssh:

SSH to host1 with PuTTY...
banjer@host1:~> #...doin some work...ooh! need to go check something on host8...
banjer@host1:~> exec ssh host8
banjer@host8:~> #...doin some work...OK time for lunch. lets close putty...
banjer@host8:~> exit
Putty closes.

5 स्तर गहरा सुंदर नहीं है, क्योंकि ट्रैफ़िक अन्य सभी सर्वरों से होकर गुजरेगा। इसकी वजह से मैं सिर्फ PuTTY या ssh (~) को मारने की सलाह नहीं देता, क्योंकि (आप जो करते हैं उसके आधार पर) यह सर्वरों पर अनाथ प्रक्रियाओं का परिणाम हो सकता है।

कोशिश करना बेहतर है और कम "आलसी" होना। पोटीन टाइटल बार पर राइट-क्लिक करने से नया सत्र जल्दी खुल जाता है। यदि आपके पास "डिफ़ॉल्ट" सर्वर है और उसमें से 1 जंप स्वीकार करते हैं, तो "डुप्लिकेट सत्र" सुविधा बहुत उपयोगी है। खासतौर पर पबकी प्रमाणीकरण का उपयोग करते समय।


2

यदि आपको थोड़ी स्क्रिप्टिंग करने में कोई आपत्ति नहीं है तो आप ऐसा कर सकते हैं।

स्क्रिप्ट: myssh.sh

#!/bin/bash
ssh $1
if [ $? -eq 5 ]; then
 exit 5
fi

डॉट कमांड के माध्यम से कॉल करें:

$ . myssh user@server.com

यदि आप एक स्तर से बाहर निकलना चाहते हैं:

$ exit

यदि आप सभी से बाहर निकलना चाहते हैं:

$ exit 5

बेशक, आपने इसे हर उस कंप्यूटर पर कॉपी कर लिया होगा जिसे आप कभी भी सेश कर सकते हैं। इसके अलावा, केवल ssh नामक शेल फ़ंक्शन को परिभाषित करना आसान नहीं होगा? इससे पहले की अवधि, इत्यादि से
बचा जा सकता है

-1

पोटीन टर्मिनल विंडो में टाइपिंग लॉगआउट मेरे लिए करता है:

richard@forevermore:~ > logout

Ssh कनेक्शन को बंद करता है और पुट्टी एप्लिकेशन को क्विट करता है।


मेरा मानना ​​है कि आपने प्रश्न को सही ढंग से नहीं पढ़ा है। ओपी करता है ssh host1, और फिर, से host1, करता है ssh host8। उस बिंदु पर logoutवही काम करेंगे जो exitकमांड उन्हें पहले से ही पता है - बाहर निकलें host8और उन्हें वापस डाल दें host1
जी-मैन का कहना है कि 'मोनिका'

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