ssh सुरंग "चैनल 2: ओपन फेल" के साथ कनेक्शन से इनकार


70

अचानक (किसी भी पैरामीटर को बदले बिना) पढ़ा: मेरे netbsd virtualmachine ने अजीब तरह से अभिनय करना शुरू कर दिया। लक्षण चिंता ssh टनलिंग।

मेरे लैपटॉप से ​​मैं लॉन्च करता हूं:

$ ssh -L 7000:localhost:7000 user@host -N -v

फिर, एक और शेल में:

$ irssi -c localhost -p 7000

Ssh डीबग कहता है:

debug1: Connection to port 7000 forwarding to localhost port 7000 requested.
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: connect failed: Connection refused
debug1: channel 2: free: direct-tcpip: listening port 7000 for localhost port 7000, connect from 127.0.0.1 port 53954, nchannels 3

मैंने लोकलहोस्ट के साथ भी कोशिश की: 80 (रिमोट) वेब सर्वर से जुड़ने के लिए, समान परिणामों के साथ।

दूरस्थ होस्ट NetBSD चलाता है:

bash-4.2# uname -a
NetBSD host 5.1_STABLE NetBSD 5.1_STABLE (XEN3PAE_DOMU) #6: Fri Nov  4 16:56:31 MET 2011  root@youll-thank-me-later:/m/obj/m/src/sys/arch/i386/compile/XEN3PAE_DOMU i386

मैं थोड़ा खोया हुआ हूं। मैंने tcpdumpदूरस्थ होस्ट पर चलने की कोशिश की , और मैंने इन 'खराब चक्सम' को देखा:

09:25:55.823849 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 67, bad cksum 0 (->3cb3)!) 127.0.0.1.54381 > 127.0.0.1.7000: P, cksum 0xfe37 (incorrect (-> 0xa801), 1622402406:1622402421(15) ack 1635127887 win 4096 <nop,nop,timestamp 5002727 5002603>

मैं कोई फायदा नहीं हुआ ssh डेमॉन को पुनः आरंभ करने की कोशिश की। मैंने अभी तक रिबूट नहीं किया है - शायद यहां कोई अन्य निदान का सुझाव दे सकता है। मुझे लगता है कि यह या तो वर्चुअल नेटवर्क कार्ड ड्राइवर हो सकता है, या किसी ने हमारे ssh को जड़ दिया है।

विचार ..?


1
समस्या निवारण के लिए, प्रयास करें $ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v। (वर्बोसिटी बढ़ाने के लिए आप 3 बार तक "-v" का उपयोग कर सकते हैं।) इसके अलावा, क्या यह संभव है कि ssh को हाल ही में अपडेट किया गया था?
माइक शेरिल 'कैट रिकॉल'

आउटपुट लॉग जिसे मैंने चिपकाया था, पहले से ही -v के साथ इकट्ठा किया गया था।
लॉरेंजोग

1
वर्बोसिटी बढ़ाने के लिए -v का उपयोग आप तीन बार तक कर सकते हैं। तो आप ssh -L 7000... -N -v -v(दो v के) या के आउटपुट को देख सकते हैं ssh -L 7000... -N -v -v -v
माइक शेरिल 'कैट रिकॉल'

@ MikeSherrill'CatRecall 'एक आशुलिपि के रूप में अच्छी तरह से इस्तेमाल किया जा सकता है: -vvv
jnns

जवाबों:


42

समस्या सुलझ गयी:

$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v

... जाहिर है, ' लोकलहोस्ट ' को रिमोट होस्ट पसंद नहीं था। फिर भी, रिमोट /etc/hostsमें शामिल हैं:

::1                     localhost localhost.
127.0.0.1               localhost localhost.

जबकि स्थानीय नेटवर्क इंटरफ़ेस है

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33184
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2

आह। मैं पर डाल 100rp के इनाम के लिए बहुत कुछ :)


1
आह। खैर, मैं एक उत्तर के रूप में अपनी टिप्पणी लिखने के लिए परेशान नहीं करूंगा। (देखें कि क्या ssh आपके सिस्टम पर ipv6 पतों को प्राथमिकता देता है।)
माइक शेरिल 'कैट रिकॉल'

वैसे आपने -v विकल्प को दोगुना करने का सुझाव दिया था, लेकिन इससे कुछ नया नहीं दिखा। हालांकि, कुछ दिनों के बाद समस्या को इंगित करने में मदद करने के बाद मुझे फिर से आउटपुट पर नज़र डालकर। यदि आप उत्तर लिखना चाहते हैं, तो मैं आपको इनाम देने से ज्यादा खुश हूं।
लॉरेंजोग

1
दरअसल, महत्वपूर्ण बिंदु "लोकलहोस्ट" की जगह "127.0.0.1" था। अतिरिक्त "-v" तर्क सहायक हो सकता है, लेकिन वे नहीं थे जो मैं लक्ष्य कर रहा था। धन्यवाद।
माइक शेरिल 'कैट रिकॉल'


1
मेरे लिए अग्रणी जोड़ना: "आपके मामले में इतनी कमांड काम करती है जो इस तरह दिखती है: ssh -L: 7000: 127.0.0.1: 7000 उपयोगकर्ता @ होस्ट -N -v -v
valentt

21

हालाँकि, ओपी की समस्या पहले ही हल हो गई है, मैंने अपनी समस्या के समाधान को साझा करने का निर्णय लिया, क्योंकि मुझे ssh से एक ही त्रुटि संदेश मिला और मुझे अन्य साइटों पर कोई समाधान नहीं मिला।

मेरे मामले में मुझे उस सेवा से जुड़ना था जो केवल आईपीवी 6 पर सुनती है। मैंने कोशिश की:

ssh -f root@192.168.0.18 -L 51005: 127.0.0.1: 51005 -N
ssh -f root@192.168.0.18 -L 51005: localhost: 51005 -N

और कुछ अन्य तरीके लेकिन यह काम नहीं किया। http://localhost:51005इस तरह की त्रुटियों के लिए कनेक्शन का कोई भी प्रयास : channel 2: open failed: connect failed: Connection refused

समाधान है:

ssh -f root@192.168.0.18 -L 51005: [:: 1]: 51005 -N

IPv6 पता वर्ग कोष्ठक में होना चाहिए।


1
क्या होगा यदि आपका ssh config फाइल का उपयोग कर रहा है? उदाहरण: "लोकलफोरवर्ड लोकलहोस्ट: 64160 192.168.1.56:3389"
मेफेक्ट

मेरे लिए अग्रणी जोड़ना ":" आपके मामले में इतनी कमांड काम करती है जो इस तरह दिखेगी: ssh -f root@192.168.0.18 -L: 51005: 127.0.0.1: 51005 -N
valentt

9

मैं सबसे पहले यही कोशिश करूंगा।

$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v

वर्बोसिटी बढ़ाने के लिए आप 3 बार तक "-v" का उपयोग कर सकते हैं।

मुझे लगता है कि अगर फ़ायरवॉल पोर्ट 7000 को ब्लॉक करता है, तो यह त्रुटि संदेश उत्पन्न हो सकता है , लेकिन आपने पहले ही इस पर शासन कर लिया था। (यदि बाद में पाठकों ने इसे खारिज नहीं किया है, तो इसका आउटपुट देखें netstat --numeric-ports।)

मुझे लगता है कि मैंने इस त्रुटि संदेश को बहुत पहले देखा होगा, जब ssh को पहली बार एक अपडेट के बाद IPV6 पतों के बारे में पता चला। मैं उस बारे में गलत हो सकता है। यदि आपको प्रयोग करने का मन है, तो आप IPV6 लूपबैक एड्रेस "0: 0: 0: 0: 0: 0: 0: 1" (या ":: 1") आज़मा सकते हैं।


3

"... जाहिर है, 'लोकलहोस्ट' को रिमोट होस्ट पसंद नहीं था। फिर भी, रिमोट / आदि / मेजबानों में शामिल हैं:)

सिवाय आप क्लाइंट पर ssh चला रहे थे, इसलिए 'लोकलहोस्ट' को आपके क्लाइंट द्वारा पसंद नहीं किया गया। दूरस्थ / etc / hosts फ़ाइल रिमोट को जोड़ने के लिए है बाहर नहीं भेजे कनेक्शन।


1
वह भी मुझे भ्रमित कर रहा था। जब आप अपने लोकमंच में लोकलहोस्ट टाइप करते हैं, तो यह स्थानीय रूप से हल हो जाता है
अहमदोव

3

मुझे एक ही त्रुटि का सामना करना पड़ा, एक ssh सुरंग के माध्यम से दूसरे सर्वर पर mysql से कनेक्ट करने का प्रयास करते हुए। मैंने पाया कि लक्ष्य सर्वर पर /etc/my.cnf में बाइंड-एड्रेस पैरामीटर आंतरिक के बजाय मेरे बाहरी आईपी (दोहरी एनआईसी सर्वर) के लिए बाध्य था, जिसका मेरे पास कोई उपयोग नहीं था।

जब मैंने बाइंड-एड्रेस = 127.0.0.1 सेट किया, तो मैं अपने ssh सुरंग का सफलतापूर्वक उपयोग कर सकता था:

ssh -N -f -L 3307:127.0.0.1:3306 user@server.name

mysql -h 127.0.0.1 --port=3307 --protocol=TCP -uusername -ppassword

मेरे लिए भी यही काम किया। आप केवल एक पते पर MySQL को बांध सकते हैं।
leeand00

3

मुझे इस त्रुटि का सामना करना पड़ा, जब मैं लोकलहोस्ट के बजाय एक पूर्ण डोमेन नाम के साथ पोर्ट अग्रेषित कर रहा था :

ssh -L 5900:host.name.com:5900 x11vnc

पोर्ट केवल लोकलहोस्ट के लिए खोला जा रहा था, इसलिए पूरी तरह से योग्य नाम के साथ कनेक्शन स्वीकार करने के लिए, मुझे एक बाध्यकारी पोर्ट विवरण जोड़ना होगा :

ssh -L *:5900:host.name.com:5900 x11vnc

जो कहीं से भी कनेक्शन की अनुमति देगा (इसलिए यह उतना सुरक्षित नहीं है, इसे संयम से उपयोग करें)।


2

मेरे लिए अग्रणी जोड़ना: "आपके मामले में इतनी कमांड काम करती है कि आप इस तरह दिखेंगे:"

ssh -L :7000:localhost:7000 user@host -N -v

बहुत समय बीत चुका है और मैं वापस जाकर जाँच नहीं कर सकता, लेकिन यह बहुत अच्छा लग रहा है।
लॉरेंजोग

1

???

चैनल 2: ओपन फेल: कनेक्ट फेल: कनेक्शन ने इनकार कर दिया

पर user@hostपोर्ट 7000 सुन रहा कोई बात नहीं है, इतना आसान है और इतना ही है।


1
यह सच नहीं है। होस्ट पर एक सेवा चल रही है: 7000। मैंने अन्य सेवाओं के साथ भी प्रयास किया।
लॉरेंजोग

2
नहीं, तो यह सिर्फ जोड़ने को लटकाएगा।
रिका

4
@ रिकी: वास्तव में, यह सच नहीं है। यदि पोर्ट बाध्य नहीं है, तो कनेक्शन अस्वीकार कर दिया जाएगा। मुझे यह त्रुटि गलत आंतरिक पोर्ट (जहां कोई सेवा नहीं चल रही थी) का उपयोग करने से मिली, जब मैंने गलती को ठीक किया तो त्रुटि चली गई। पोइज सही है कि अगर पोर्ट पर कुछ भी नहीं सुन रहा है, तो यह त्रुटि का कारण होगा।
एरब

1

मुझे एक ही त्रुटि संदेश प्राप्त हुआ:

चैनल 3: ओपन फेल: कनेक्ट फेल: कनेक्शन ने इनकार कर दिया

और इसका कारण मानवीय त्रुटि थी - मुझे निर्दिष्ट होस्ट की तुलना में दूरस्थ होस्ट पर एक अलग पोर्ट तक पहुंचने की कोशिश कर रहा था।

बस सोचा था कि मैं इसे साझा करूंगा, हालांकि यह शायद कारण नहीं है कि आप में से अधिकांश इस त्रुटि का अनुभव कर रहे हैं।


मेरे मामले में: यह वही है जो मैं कर रहा था। इस तरह की बेवकूफाना गलती लेकिन इसने मुझे पोर्ट की जांच करने के लिए यह जवाब दिया। रवींद्र।
केन शार्प

1

मेरे लिए, मैं कोशिश कर रहा था ssh -L <port>:<remote server IP>:<port> <login>@<remote server IP>जब मुझे करना चाहिए था ssh -L <port>:127.0.0.1:<port> <login>@<remote server IP>

मुझे उम्मीद है इससे किसी को सहायता मिलेगी!


1

वैकल्पिक व्याख्या, मेरे मामले में, यह गलत है।

user@host ~ $ ssh -vvvNL 4444:127.0.0.0.1:4444
...
channel 2: open failed: connect failed: Name or service not known

यहाँ क्या होता है आईपी पते में एक बहुत अधिक शून्य है, इस प्रकार एक वैध पता नहीं है। तो ssh इसे एक डोमेन नाम के रूप में मानता है जिसके बजाय यह हल नहीं कर सकता है। ऊप्स!

पुनश्च: मैं इसे पूरक करता हूं इसलिए समान लक्षणों का निवारण करते समय हमारे पास संभावित समस्याओं की व्यापक सूची है।

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