सवाल एसएस सुरंग "चैनल 2: खुला असफल" के साथ कनेक्शन से इंकार कर रहा है


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

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

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

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

$ irssi -c localhost -p 7000

एसएसएच डीबग कहते हैं:

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 (रिमोट) वेब सर्वर से कनेक्ट करने के लिए, समान परिणामों के साथ।

रिमोट होस्ट नेटबीएसडी चलाता है:

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>

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

विचार ..?


47
2018-03-19 09:32


मूल


समस्या निवारण के लिए, कोशिश करें $ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v। (आप वर्बोजिटी बढ़ाने के लिए 3 बार तक "-v" का उपयोग कर सकते हैं।) साथ ही, क्या यह संभव है कि एसएसएच को हाल ही में अपडेट किया गया हो? - Mike Sherrill 'Cat Recall'
चिपका हुआ आउटपुट लॉग पहले से ही -v के साथ इकट्ठा किया गया था। - lorenzog
आप वर्बोसिटी बढ़ाने के लिए तीन बार तक उपयोग कर सकते हैं। तो आप के आउटपुट को देख सकते हैं ssh -L 7000... -N -v -v (दो वी) या ssh -L 7000... -N -v -v -v। - Mike Sherrill 'Cat Recall'
@ माइकशेरिल'कैटरैकल 'एक शॉर्टेंड का भी उपयोग किया जा सकता है: -vvv - jnns


जवाब:


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

$ 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

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


22
2018-03-31 20:48



आह। वैसे तो, मैं एक टिप्पणी के रूप में अपनी टिप्पणी लिखने के लिए परेशान नहीं होगा। (देखें कि एसएसएच आपके सिस्टम पर ipv6 पते पसंद करता है या नहीं।) - Mike Sherrill 'Cat Recall'
खैर आपने -v विकल्प को दोगुना करने का सुझाव दिया, लेकिन इससे कुछ नया नहीं दिखाया गया .. हालांकि, कुछ दिनों के बाद मुझे फिर से आउटपुट देखने से समस्या को दूर करने में मदद मिली। अगर आप जवाब लिखना चाहते हैं, तो मैं आपको बक्षीस देने के लिए खुश हूं। - lorenzog
असल में, महत्वपूर्ण बिंदु "लोकहोस्ट" को "127.0.0.1" के साथ बदल रहा था। अतिरिक्त "-v" तर्क उपयोगी हो सकते थे, लेकिन वे नहीं थे जो मैं लक्ष्य रख रहा था। धन्यवाद। - Mike Sherrill 'Cat Recall'
सुपरसियर पर उस पोस्ट के अनुसार: superuser.com/questions/346971/ssh-tunnel-connection-refused  एक विशिष्ट पते पर सुनने के लिए कॉन्फ़िगर किया गया एक प्रोग्राम उस विशिष्ट पते को सुन देगा - jopasserat
मेरे लिए अग्रणी ":" काम जोड़ना आपके मामले में इतना कमांड इस तरह दिखेगा: ssh -L: 7000: 127.0.0.1: 7000 उपयोगकर्ता @ host -N -v -v - valentt


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

मेरे मामले में मुझे उस सेवा से कनेक्ट करना पड़ा जो केवल आईपीवी 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: लोकलहोस्ट: 51005-एन

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

समाधान है:

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

IPv6 पता स्क्वायर ब्रैकेट में होना चाहिए।


18
2017-09-26 08:23



यदि आप एक एसएसपी कॉन्फ़िगरेशन फ़ाइल का उपयोग कर रहे हैं तो क्या होगा? उदाहरण: "लोकल फॉरवर्ड लोकहोस्ट: 64160 1 9 .168.1.56:338 9" - meffect
मेरे लिए अग्रणी ":" काम जोड़ना आपके मामले में इतना कमांड इस तरह दिखेगा: ssh -f root@192.168.0.18 -L: 51005: 127.0.0.1: 51005 -N - valentt


मैं पहले यह कोशिश करता हूँ।

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

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

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

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


6
2018-04-01 11:47





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

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

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

3
2018-04-03 23:55



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


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

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

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

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

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


3
2017-12-11 19:47





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

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


2
2018-04-01 14:42



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


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

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

2
2018-04-12 23:53



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


???

चैनल 2: खुला असफल: कनेक्ट विफल: कनेक्शन से इनकार कर दिया

पर user@host पोर्ट 7000 सुनने में कुछ भी नहीं है, यह आसान है और यह सब कुछ है।


1
2018-03-31 04:06



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