SSH रिवर्स टनल netstat पोर्ट


0

मैंने SSH रिवर्स टनल के बारे में एक सवाल किया है।
मेरे पास एक Ubuntu सर्वर है जिसमें sshd स्थापित है।
मैं एक दूरस्थ मशीन से एक SSH रिवर्स सुरंग खोलता हूं। उस मशीन पर हर बार सुरंग के बाधित होने पर कनेक्शन को फिर से चालू किया जाता है।

जब भी कोई सुरंग खोली जाती है, SSH सर्वर पर मैं दो कनेक्शन देख सकता हूं जब मैं उपयोग कर रहा हूं netstat। एक कनेक्शन आंतरिक सर्वर पोर्ट को सुन रहा है। दूसरा बाहरी पोर्ट पर सुन रहा है। बाद वाला एसएसएच सुरंग है।

उदाहरण के रूप में:

दिया गया 203.0.113.10: मेरा SSH सर्वर और 10.34.23.12 मेरा रिमोट पीसी, 5000 मेरे रिमोट पीसी पर पोर्ट मैं एक्सेस करना चाहूंगा

ssh -R 1122:localhost:5000 serveruser@203.0.113.10

अब सर्वर साइड में दो सुनने के कनेक्शन हैं, जो इस तरह दिखता है

tcp6    0    :::1122              :::*                 LISTEN
tcp6    0    0 203.0.113.10:22    10.34.23.12:62734    ESTABLISHED

मैं उपयोग / चलाता हूं nc सर्वर से कमांड, सुरंग के काम के लिए जाँच करने के लिए

nc -z -v -w5 127.0.0.1 1122

कभी-कभी ऐसा होता है कि बाहरी संबंध मर जाता है, इसलिए मेरी netstat आउटपुट होगा

`tcp6    0    0 203.0.113.10:22    10.34.23.12:62734    ESTABLISHED`

क्या यह जांचने का कोई तरीका है कि किस सुरंग में बाहरी बंदरगाह नहीं है?

मेरा मतलब है, जब मेरे 1122 पोर्ट की मृत्यु हो जाती है, तो क्या इसकी जांच करने का कोई तरीका है?
मेरा समाधान किसी बाहरी बंदरगाह (10.34.23.12:6274) के बिना सुरंग में बंधी sshd प्रक्रिया को मार देगा। समस्या यह है कि मैं इस मशीन पर एक अन्य एसएसएच सुरंग है, जिसे मैं मारना नहीं चाहूंगा killall sshd एक विकल्प नहीं होगा।

धन्यवाद!

1 संपादित करें:

संभावित समाधान : Netstat -lptun कमांड (और पॉल द्वारा सुझाए गए netstat -pant) इसे हल करने की कोशिश करने के लिए बाध्यकारी की आवश्यकता है। अब मैं उत्पादन में इस समाधान का परीक्षण कर रहा हूं।

#!/bin/sh
for pid in `lsof -i -n | egrep '\<ssh\>' | awk '{print $2}'`; do
  foundpid="$(netstat -lptun | grep :::11 | grep $pid)"
  if [ -z "$foundpid" ]
  then
    echo PID does not have any external port, killing the pid $pid
    kill $pid
  fi
done

यदि तुम करो netstat -pant, क्या दोनों एक ही प्रक्रिया के स्वामित्व वाली नेटस्टैट लाइनें हैं, और दूसरी ssh प्रक्रिया के लिए अलग जिसे आप रखना चाहते हैं?
Paul

धन्यवाद पॉल, आपकी टिप्पणी (मेरी गलती) पढ़ने से पहले, मैं -lptun विकल्प की जाँच कर रहा था। अब मैं "एडिट 1" समाधान का परीक्षण कर रहा हूं।
Davide Gironi

जवाबों:


0

"रिवर्स" सुरंग से आपका क्या मतलब है?

-R पैरामीटर, स्थानीय स्तर पर शुरू की गई सुरंग को संदर्भित करता है, जो -L पैरामीटर के बजाय एक दूरस्थ रूप से शुरू की गई सुरंग को संदर्भित करता है।

इसलिए, SSH क्लाइंट के दृष्टिकोण से, -R पैरामीटर रिमोट एंड (जो SSH सर्वर का मतलब है) पर ट्रैफ़िक के लिए सुनेगा। जब SSH सर्वर चलाने वाला कंप्यूटर निर्दिष्ट पोर्ट (1122) पर ट्रैफ़िक प्राप्त करता है, तो वह कंप्यूटर SSH सॉफ़्टवेयर के माध्यम से उस जानकारी को भेज देगा। विशेष रूप से, यह SSH सुरंग के माध्यम से उस जानकारी को भेजेगा। जैसे ही सूचना SSH सुरंग के माध्यम से भेजी जाती है, यह सभी SSH ट्रैफ़िक की तरह एन्क्रिप्टेड हो जाती है। साथ ही, उस सूचना में थोड़ा सा नोट जोड़ा जाता है, जो कि (कहने के लिए यहां परिकल्पित है) "ट्रैफिक को लोकलहोस्ट पोर्ट 5000 पर भेजें"

जब SSH सुरंग के दूसरे छोर पर यातायात (इस उदाहरण में, हम अब SSH क्लाइंट को चलाने वाले कंप्यूटर के बारे में बात कर रहे हैं) यातायात प्राप्त करता है, तो यह नोट देखता है कि यातायात कहाँ जाएगा। तो फिर वह कंप्यूटर लोकलहोस्ट पोर्ट 5000 तक पहुँचता है। समय की बात है कि "लोकलहोस्ट" का होस्ट नाम हल हो जाता है। इसलिए, इस उदाहरण में, "लोकलहोस्ट" एसएसएच क्लाइंट को संदर्भित करेगा। (इसके विपरीत, यदि आप -L का उपयोग करते हैं, तो "लोकलहोस्ट" का उपयोग करना, जैसे कि अभी भी सुरंग के अंत में ट्रैफ़िक प्राप्त कर रहा है, इसलिए "लोकलहोस्ट" वाक्यांश की व्याख्या एसएसएच सर्वर द्वारा की जाएगी।)

अब, आपका सबसे अच्छा शर्त यह पता लगाना है कि सुरंग क्यों ढहती रहती है। मैंने आमतौर पर एल (स्थानीय) सुरंगों का उपयोग किया है, लेकिन मैंने उन्हें पहले कई दिनों तक (कभी-कभी) एक का उपयोग करने का निर्णय लेने के लिए अनदेखा किया है, और यह ठीक काम करता है। मैं मान सकता हूं कि सुरंग को या तो समाप्त किया जा सकता है। लॉग के लिए दोनों पक्षों की जाँच करें। आप यह देखने के लिए ओपनएसएसएच के दस्तावेज़ीकरण की जांच कर सकते हैं कि क्या किसी प्रकार का टाइमआउट है जिससे आप निपट रहे हैं।

यदि आप sshd को मारकर और पुनः आरंभ करके समस्या के इर्द-गिर्द काम करने (इसे ठीक करने के बजाय) के अपरिहार्य मार्ग पर जाना चाहते हैं, तो आप ऐसा कर सकते हैं। जैसा कि कहा गया है, आप उपयोग नहीं करना चाहते हैं killall sshd क्योंकि एक और sshd कनेक्शन हो सकता है। तुम कोशिश कर सकते हो pkill 203.0.113.10 (या यह 10.34.23.12 है?) या पोर्ट नंबर (1122) से कनेक्ट होने वाले किसी भी कार्यक्रम को खत्म करने के लिए, लेकिन, फिर से, कुछ गलत सकारात्मकता पैदा कर सकता है। आपके पास समस्या के आसपास काम करने का एक सुरक्षित तरीका है; यहां तक ​​कि इसमें सर्वर को फिर से शुरू करने का आपका वही प्रस्तावित तरीका भी शामिल है।

आप sshd एक कस्टम कॉन्फ़िगरेशन फ़ाइल का उपयोग कर सकते हैं ( -f configuration file ), या आप कमांड लाइन पर कॉन्फ़िगरेशन जानकारी निर्दिष्ट कर सकते हैं (उपयोग करके -o )। उदा .:

sshd -o PidFile /var/run/sshd-remPC-tunnel.pid

(इसके अलावा, आप उस कमांड लाइन पर अपने अन्य वांछित विकल्पों को शामिल करेंगे।)

जब आप sshd प्रारंभ करते हैं तो यह उस फ़ाइल में प्रक्रिया ID नंबर डालता है। तब आप कर सकते हो:

kill $( cat /var/run/sshd-remPC-tunnel.pid )

(नोट: आपको अनुमतियों के साथ मिलाने की आवश्यकता हो सकती है। मैं बहुत ही जानबूझकर इस बारे में परवाह नहीं कर रहा हूं, ताकि मेरा जवाब सही रहे।) sshd फ़ाइल बना सकते हैं, और आप सफलतापूर्वक कर सकते हैं cat जब आपकी इच्छा हो kill यह। परीक्षण चलाएं, और आपको जो कुछ भी बदलाव करने की आवश्यकता है वह करें।)

नोट: आप शायद हर 5 मिनट में (समस्या को ठीक करने के लिए स्वचालित) सुरंग को केवल ऑटो री-स्टार्ट नहीं करना चाहते हैं। क्योंकि, यदि आपके पास एक सफल कनेक्शन है, तो यह सफल कनेक्शन को बाधित करेगा। इसलिए मुझे लगता है कि यह मैन्युअल रूप से किए जाने का इरादा होगा।


धन्यवाद, हां मैं रिवर्स सुरंग बाय-आर विकल्प के बारे में बात कर रहा हूं। मैं क्लाइंट मशीनों पर फ़ायरवॉल को "बायपास" करने के लिए उपयोग कर रहा हूं। ग्राहक मशीन 3 जी के माध्यम से जुड़े हुए हैं। ईमानदार होने के लिए ग्राहक खिड़कियां हैं, लॉग इन करने का तरीका नहीं मिल सकता है। जाहिर है मैं समझने की कोशिश कर रहा हूं कि सुरंगें क्यों मरती हैं, निरीक्षण / //log/auth.log यह मेरा सवाल है कि सुरंगों को कैसे जीवित रखा जाए: superuser.com/questions/1105588/... । सुरंगों को मारना मेरा पसंदीदा विकल्प नहीं है। इस रिप्ले को लिखने से मुझे एक संभावित समाधान मिल गया है, "एडिट 1" देखें।
Davide Gironi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.