मुझे यहाँ समाधान मिला: http://www.g-loaded.eu/2006/11/24/auto-closing-ssh-tunnels/
सबसे अच्छा तरीका है - सुरंग जो ऑटो-पास
जैसा कि पहले उल्लेख किया गया है, -f -N स्विच संयोजन का उपयोग करने के बजाय, हम -f अकेले उपयोग कर सकते हैं, लेकिन रिमोट मशीन पर एक कमांड निष्पादित भी कर सकते हैं। लेकिन, किस कमांड को निष्पादित किया जाना चाहिए, क्योंकि हमें केवल एक सुरंग को शुरू करने की आवश्यकता है?
यह तब है जब नींद सभी का सबसे उपयोगी आदेश हो सकता है! इस विशेष स्थिति में, नींद के दो फायदे हैं:
- यह कुछ भी नहीं करता है, इसलिए कोई संसाधनों का उपभोग नहीं किया जाता है
- उपयोगकर्ता यह निर्दिष्ट कर सकता है कि इसे कितनी देर तक निष्पादित किया जाएगा
Ssh टनल को ऑटो-क्लोज करने में ये कैसे मदद करते हैं, नीचे बताया गया है।
हम दूरस्थ मशीन पर 10 सेकंड के लिए नींद कमांड निष्पादित करते हुए, पृष्ठभूमि में ssh सत्र शुरू करते हैं। सेकंड की संख्या महत्वपूर्ण नहीं है। उसी समय, हम vncviewer को पहले की तरह निष्पादित करते हैं:
[me@local]$ ssh -f -L 25901:127.0.0.1:5901 me@remote.example.org sleep 10; \
vncviewer 127.0.0.1:25901:1
इस स्थिति में, ssh क्लाइंट को बैकग्राउंड (-f) में ssh सत्र को कांटा करने के लिए निर्देश दिया जाता है, सुरंग बनाएं (-L 25901: 127.0.0.1: 5901) और दूरस्थ सर्वर पर 10 सेकंड के लिए स्लीप कमांड निष्पादित करें (नींद) 10)।
मूल रूप से इस विधि और पिछले एक (-N स्विच) के बीच का अंतर यह है कि इस मामले में ssh क्लाइंट का प्राथमिक लक्ष्य सुरंग बनाना नहीं है, बल्कि 10 सेकंड के लिए स्लीप कमांड को निष्पादित करना है। सुरंग का निर्माण कुछ प्रकार का दुष्प्रभाव है, एक माध्यमिक लक्ष्य है। यदि vncviewer का उपयोग नहीं किया गया था, तो ssh क्लाइंट 10 सेकंड की अवधि के बाद बाहर निकल जाएगा, क्योंकि उसके पास एक ही समय में सुरंग को नष्ट करने के लिए और अधिक नौकरियां नहीं होंगी।
स्लीप कमांड के निष्पादन के दौरान, यदि कोई अन्य प्रक्रिया, इस मामले में vncviewer, उस सुरंग का उपयोग करना शुरू कर देती है और इसे 10 सेकंड की अवधि से आगे रखती है, तो, भले ही ssh क्लाइंट अपनी दूरस्थ नौकरी (नींद का निष्पादन) समाप्त कर ले, यह नहीं हो सकता है। बाहर निकलना क्योंकि सुरंग में एक और प्रक्रिया होती है। दूसरे शब्दों में, ssh क्लाइंट सुरंग को नष्ट नहीं कर सकता क्योंकि उसे vncviewer को भी मारना होगा। जब vncviewer सुरंग का उपयोग करना बंद कर देता है, तो ssh क्लाइंट भी बाहर निकल जाता है, क्योंकि यह पहले ही अपना लक्ष्य पूरा कर चुका होता है।
इस तरह, पृष्ठभूमि में कोई भी ssh प्रक्रिया नहीं चलती है।
/tmp/session1
(हालांकि इसे % पैटर्न का उपयोग करके नाम देने की सिफारिश की गई है - कंट्रोलपाथ विवरण देखेंman ssh_config
)