अंत रिवर्स एसएसएच सत्र


3

मुझे देश (आरपीआई) के आसपास 20 या तो मशीनें बिखरी पड़ी हैं और वे सभी मोबाइल नेटवर्क पर हैं (सार्वजनिक आईपी नहीं है।) कभी-कभी, मुझे मशीन तक पहुंचने की आवश्यकता होती है, इसलिए मैंने सेट किया है! बचाव स्क्रिप्ट जो मशीन इतनी बार हर खींचने की कोशिश करेगी, और मैं उस स्क्रिप्ट को अपने सर्वर पर एक रिवर्स एसएसएच कर सकता हूं ताकि मैं इसमें लॉग इन कर सकूं। यह अच्छी तरह से काम कर रहा है, लेकिन मैं यह जानने की कोशिश कर रहा हूं कि मैं उस सत्र को कैसे / कहां से मार सकता हूं।

मूल रूप से, मैं सभी मशीनों पर एक ही स्क्रिप्ट चलाना चाहता हूं (वे सभी एक ही समय में नहीं चलेंगे, और वे केवल अपने विशिष्ट वीडियो को ही खींचते हैं)। इसलिए मैं उन्हें अपने सर्वर से कनेक्ट करना चाहता हूं, जहां मैं कुछ ऐसा करके उन्हें एक्सेस कर सकता हूं:

ssh -p 2222 pi@localhost

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


SSH सुरंग को खोलने के लिए दूरस्थ मशीनों पर आपके द्वारा उपयोग की जाने वाली कमांड क्या है? मैं अनुमान लगा रहा हूं कि सुरंग को बंद करने का सबसे आसान तरीका ps | grep <port_forwarded>रिमोट मशीन पर करना होगा और फिर उस पीआईडी ​​को मारना होगा।
इरिनी

अगर मैं सीधे मशीन में हूँ (मेरे पास स्थानीय रूप से एक परीक्षण मशीन है) और मैं ps चलाता हूँ, मैं ssh को दौड़ते हुए देख सकता हूँ। हालांकि अगर सर्वर से मैं खुली सुरंग में चला जाता हूं और पीएस चलाता हूं, तो मैं एसएसएच को नहीं देखता हूं, इसलिए मारने के लिए कुछ भी नहीं है।
McB

क्षमा करें, मेरा ps कमांड शायद कुछ ऐसा होना चाहिए ps auxया ऐसा कुछ था जो सभी ssh सत्रों (और चल रही प्रक्रियाओं) को सूचीबद्ध करेगा। मैं अनुमान लगा रहा हूं कि आप जिस उपयोगकर्ता के रूप में लॉग इन करते हैं, वह उस उपयोगकर्ता से अलग है जिसने सुरंग शुरू की थी?
इर्नी

मुझे अब क्या काम मिल रहा है, और मुझे लगता है कि यह करने का सबसे आसान तरीका है, सर्वर से है, ऊपर दिए गए कमांड के माध्यम से जुड़ा होने के बाद, मैं $ किल (पीडोफ एसएचएस) चलाता हूं और जो सत्रों को समाप्त करता है और मुक्त करता है बंदरगाह।
मैकबी

जवाबों:


1

यह करके यह काम कर गया:

kill $(pidof ssh)

यह सभी खुले सत्रों को मार देगा, न कि केवल वर्तमान एक को। मुझे लगता है कि यह आपके मामले में ठीक है। यहाँ मैं एक SSH_CLIENTऔर SSH_CONNECTIONपर्यावरण चर को देख सकता हूँ, जो दोनों को इसी सत्र के ssh पोर्ट सम्‍मिलित करते हैं। की मदद से netstatया lsofउन्हें वर्तमान सत्र के सटीक पीआईडी ​​की पहचान करने के लिए इस्तेमाल किया जा सकता है।
scai

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