ssh_exchange_identification: दूरस्थ होस्ट द्वारा कनेक्शन बंद किया गया (hosts.deny का उपयोग नहीं कर रहा है)


74

मैं उपयोग नहीं कर रहा हूँ hosts.allowया hosts.deny, और अधिक SSH मेरी विंडोज़-मशीन (एक ही लैपटॉप, विभिन्न हार्ड ड्राइव) से काम करता है, लेकिन मेरी लिनक्स मशीन से नहीं।

ssh -vvv root@host -p port देता है:

OpenSSH_6.6, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to host [host] port <port>.
debug1: Connection established.
debug1: identity file /home/torxed/.ssh/id_dsa type -1
debug1: identity file /home/torxed/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6
ssh_exchange_identification: read: Connection reset by peer

विंडोज़ मशीन पर सब कुछ ठीक काम करता है, इसलिए मैंने सुरक्षा लॉग की जाँच की और वहां की लाइनें समान हैं, सर्वर दो अलग-अलग "मशीनों" को अलग नहीं मानता है और वे दोनों सार्वजनिक-कुंजी प्रमाणीकरण के माध्यम से अनुमत हैं।

इसलिए यह निष्कर्ष निकलता है कि यह मेरे स्थानीय आर्कलिनक्स लैपटॉप के साथ एक मुद्दा होना चाहिए .. लेकिन क्या?

[torxed@archie ~]$ cat .ssh/known_hosts 
[torxed@archie ~]$ 

तो यह समस्या नहीं है ..

[torxed@archie ~]$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

फ़ायरवॉल सेटिंग्स (अभी के लिए) के साथ कोई विरोध नहीं ..

[torxed@archie ~]$ ls -la .ssh/
total 20
drwx------  2 torxed users 4096 Sep  3  2013 .
drwx------ 51 torxed users 4096 May 11 11:11 ..
-rw-------  1 torxed users 1679 Sep  3  2013 id_rsa
-rw-r--r--  1 torxed users  403 Sep  3  2013 id_rsa.pub
-rw-r--r--  1 torxed users  170 May 11 11:21 known_hosts

अनुमतियाँ ठीक प्रतीत होती हैं (सर्वर पर समान) .. /etc/ssh/ssh_configसाथ ही क्लाइंट में चल रहे बहुत सारे ऑटो-कॉन्फ़िगरेशन को छोड़कर एक ही परिणाम के साथ कॉन्फ़िगर किए बिना कोशिश की जाती है जो एक ही त्रुटि के साथ समाप्त होती है।


कृपया का आउटपुट दें iptables-save|grep -v '^#', जिसमें अन्य तालिकाओं (जैसे natऔर mangle) को शामिल किया जाएगा। यदि वे खाली हैं, तो बस यह बताएं कि आपका iptablesऊपर का आउटपुट डिफ़ॉल्ट रूप से filterतालिका तक सीमित है । इसके अलावा, SSH सर्वर पर SSH को एक वैकल्पिक पोर्ट पर इस तरह चलाएं और डीबग आउटपुट दें।
0xC0000022L

@ 0xC0000022L gist.github.com/Torxed/d7a5a556c527ffbb609d और gist.github.com/Torxed/1fd9b5b0b276629caf30 पर और फ़ायरवॉल के संबंध में, SSH मेरी विंडोज़ ड्राइव (फिर, वही लैपटॉप इरगो मैक) के लिए काम कर रहा है।
Torxed

दो और बातें। आपको वैकल्पिक पोर्ट पर उदाहरण से कनेक्ट करने की आवश्यकता है। अन्यथा आप संभावित समस्याओं को नहीं देख पाएंगे। विंडोज बनाम लिनक्स की बात, IPv6 का उपयोग कर उनमें से एक है शायद ( ip6tables-save)?
0xC0000022L

@ 0xC0000022L मुझे अत्यंत खेद है। मैं गलत IP से जुड़ा था .. पोर्ट 8080 पर SSH रनिंग कर रहा था, इसलिए मैंने पोर्ट 8080> _ <
Torxed

1
यह मेरे साथ रुक-रुक कर हुआ, जब मेरे सर्वर को कुछ बेतरतीब हमलावर ने जोर-जबरदस्ती करने की कोशिश की। हमलावर से कनेक्शन छोड़ने के लिए फ़ायरवॉल नियम जोड़कर तय किया गया।
एंड्रयू होव्स

जवाबों:


60

यदि आपने किसी भी "बाहरी" कारक को खारिज कर दिया है, तो निम्न चरणों का सेट आमतौर पर इसे कम करने में मदद करता है। इसलिए जब यह सीधे आपके प्रश्न का उत्तर नहीं देता है, तो यह त्रुटि कारण को ट्रैक करने में मदद कर सकता है।

समस्या निवारण sshd

मुझे ऐसे किसी भी मामले में आम तौर पर जो बहुत उपयोगी लगता है, sshdवह यह है कि इसे बिना बताए शुरू किया जाए। मेरे मामले में समस्या यह थी कि न तो syslogहै और न ही auth.logकुछ भी सार्थक दिखाया।

जब मैंने इसे टर्मिनल से शुरू किया तो मुझे यह मिला:

# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.

काफी बेहतर! इस त्रुटि संदेश ने मुझे यह देखने की अनुमति दी कि क्या गलत है और इसे ठीक करें। किसी भी लॉग फ़ाइल में यह आउटपुट नहीं था।

नायब: कम से कम उबंटू में एक पूर्ण मार्ग की आवश्यकता $(which sshd)को पूरा करने के लिए सबसे अच्छी विधि है sshd। नहीं तो आप निम्न त्रुटि मिल जाएगा: sshd re-exec requires execution with an absolute path-p 10222बनाता है sshd, विन्यास फाइल अधिभावी है कि वैकल्पिक पोर्ट पर सुनने - यह इतना है कि यह संभवतः चल के साथ संघर्ष नहीं करता sshdउदाहरणों। यहां एक मुफ्त पोर्ट चुनना सुनिश्चित करें।

अंत में: वैकल्पिक पोर्ट से कनेक्ट करें ( ssh -p 10222 user@server)।

इस विधि ने मुद्दों को खोजने में कई बार मेरी मदद की है, चाहे वह प्रमाणीकरण समस्या हो या अन्य प्रकार। वास्तव में वर्बोज़ आउटपुट प्राप्त करने के लिए stdout, उपयोग करें $(which sshd) -Ddddp 10222( ddवर्बोसिटी बढ़ाने के लिए जोड़ा गया नोट करें )। अधिक डिबगिंग अच्छाई की जाँच के लिए man sshd


मैं गलत आईपी से जुड़ा, लेकिन यह मुझे मिल रहा है .. ध्यान दें कि मेरे कनेक्शन के किसी भी प्रयास ने डिबग आउटपुट में नहीं दिखाया है ..
Torxed

2
$ (जो sshd) -Ddp 10222 मुझे अंत में देखना चाहिए कि मेरा मुद्दा क्या था। बहुत बहुत धन्यवाद!
Cuga

9

आपके पास एक होस्ट भी हो सकता है, जिसकी मेमोरी इतनी बुरी तरह से खंडित हो जाती है कि वह एसएसएच सत्र की मेजबानी के लिए प्रक्रिया को कांटा करने के लिए एक पृष्ठ को एक सन्निहित स्मृति आवंटित नहीं कर सकता है।

ऐसे मामले में, आप या तो संदेश प्राप्त कर सकते हैं:

ssh_exchange_identification: read: Connection reset by peer

या:

Connection closed by aaa.bbb.ccc.ddd

यह निर्भर करता है कि इससे पहले कि मेजबान बाहर हो जाए, कितनी दूर है।

यदि मेमोरी फ्रेगमेंटिंग स्पष्ट कारण है, तो समाधान अन्य माध्यमों से सर्वर तक पहुंचने और कुछ उचित सेवाओं को पुनः आरंभ करने के लिए है। मैंने अपाचे और MySQL को VM का अपराधी माना है क्योंकि VM का स्वैप विभाजन नहीं है। असफल होना, मेजबान को रिबूट करना।


6

सिर्फ मामले में, क्योंकि मेरे साथ ऐसा हुआ था। सुनिश्चित करें कि आपने मेजबान में sshd चल रहा है!

यह एक बेवकूफ विफलता है, लेकिन वास्तव में आपकी समस्या हो सकती है।


10
अगर sshdनहीं चल रहा था तो कनेक्शन बंद नहीं होगा, लेकिन मना कर दिया गया (कोशिश करें ssh -p someportwithoutsshd localhost)।
एंथन

4
खैर, मेरा मामला सीधा संबंध नहीं था। मैंने एक गैर-सुनने वाली मशीन के लिए एक रिवर्स टनल बनाया, और जो ssh क्लाइंट कनेक्शन में आउटपुट था।
txomon

1
बेवकूफ मुझे यह भी पता नहीं है कि मेरे पास कोई sshd नहीं है, इसे
ओपनश

4

मैंने पाया कि यह त्रुटि सर्वर पर ssh सत्र से अधिक होने के कारण थी। मैंने मेजबानों को सभी ग्राहकों से सभी सत्रों को जोड़ने और मारने की कोशिश की। सभी सत्रों को साफ़ करने के बाद समस्या हल हुई।


20
आपने ऐसा कैसे किया?
गर्भपात

4
आपने ऐसा कैसे किया? पिंग ...
knocte

एक तरीका होगा whoउपयोगकर्ता प्रक्रियाओं का उपयोग करके और उन्हें मारकर खुले सत्रों का पता लगाना ।
फ्लैट्रोन

Ssh सत्र को कैसे मारें
तेजस काले

4

मैं ssh_exchange_identification: read: Connection reset by peerएक स्क्रिप्ट में समस्या को पूरा करता था जो एक लूप में 16 या अधिक ssh सत्र शुरू करता है। sshd स्पष्ट रूप से नहीं रख सकता है; एक छोटी नींद जोड़ने से मेरी समस्या हल हो गई:

for i in $(seq 32)
do
    ssh -f root@$HOST "./test_server -p $(expr $BASE_PORT + $i)" > svr${i}.out
    # for > 8 connections, ssh has ssh_exchange_identification issues
    sleep 0.1
done

3

या आपने किया हो सकता है कि मैंने कल रात क्या किया, और हटा दिया / var / खाली। जाहिर है कि sshd की कार्यप्रणाली के लिए निर्देशिका और इसकी अनुमति आवश्यक है और यह निर्देशिका को रीमेक नहीं करेगा जब पुनः आरंभ पुनः आरंभ /etc/init.d/sshdकरने में विफल हो जाएगा और कुछ भी systemd आपको नहीं बताएगा कि क्यों।

मुझे अग्रभूमि में sshd चलाकर समस्या मिली:

# /usr/sbin/sshd -Dd
  Missing privilege separation directory: /var/empty/sshd

निर्देशिकाओं के पुनर्निर्माण से मेरे मामले में समस्या हल हो गई:

drwxr-xr-x. root root  /var/empty
drwx--x--x. root root  /var/empty/sshd

लिनक्स प्रोग्रामर पर ध्यान दें: /var/emptyवास्तव में महत्वपूर्ण सामान ... वास्तव में ???


ls -ld /var/emptyls: cannot access '/var/empty': No such file or directory। इसलिए कम से कम एक वितरण ने इसे पूरी तरह से खत्म कर दिया है। /etc/init.d/sshdस्क्रिप्ट को देखते हुए , ऐसा लगता है कि डेबियन पर, कम से कम, विशेषाधिकार अलगाव निर्देशिका अब है /var/run/sshdऔर स्टार्ट-अप समय पर बनाई गई है यदि यह पहले से मौजूद नहीं है।
रोज़ा

1

ssh_exchange_identification: Connection closed by remote hostSSH से कनेक्ट करने का प्रयास करते समय मुझे त्रुटि मिली : मैंने अपने स्थानीय कंप्यूटर के SSH पोर्ट 22 के लिए एक दूरस्थ पोर्ट अग्रेषित किया ताकि मैं इसे इंटरनेट पर एक दूरस्थ सर्वर से अस्थायी रूप से एक्सेस कर सकूं।

वास्तव में त्रुटि सिर्फ इसलिए प्रदर्शित की गई क्योंकि मुझे याद नहीं था कि मैंने स्टार्टअप पर SSH सेवा को अक्षम कर दिया था, इसलिए मुझे अपने स्थानीय कंप्यूटर पर SSH सेवा शुरू करनी थी sudo service ssh start:।


1
धन्यवाद, आपने मेरी जान बचाई।
अल कसिह

0

पहली बात पहले; यह सत्यापित करने के लिए कि होस्ट 22 वास्तव में सुन रहा है (खोला हुआ) उस होस्ट पर है:

telnet x.x.x.x 22

(यदि नहीं, तो आप लॉगिन करने के लिए कंसोल केबल को हुक कर सकते हैं)

मेरे मामले में, यह काम नहीं कर रहा था और मैंने लॉगिन करने के लिए कंसोल केबल को हुक किया। एक बार जब मैंने लॉग इन किया, तो मुझे पता चला कि सभी 5 वीटीवाई लाइनें उस होस्ट (एक सिस्को राउटर) पर व्यस्त थीं।

मैंने पुराने कनेक्शनों को साफ़ किया जो वीटीवाई लाइनों को मुक्त करने के लिए वहां लटका हुआ था, यह काम करता था। मैंने VTY लाइनों के तहत कमांड "एक्ज़ीक्यूट-टाइमआउट 15" को जोड़ा। फिर मैंने कंसोल केबल को हटा दिया।

पाठ:

अपने सभी उपकरणों पर 5-10 मिनट का समय निर्धारित करना सुनिश्चित करें - (यदि कोई गतिविधि का पता नहीं चला है)।


2
उस मामले में, आप एक "कनेक्शन अस्वीकार कर दिया" की तरह मिलता था एक और उत्तर निहित , नहीं "कनेक्शन स्थापित करता है" "सहकर्मी से कनेक्शन रीसेट" द्वारा पीछा किया
जेफ स्कालर

1
टेलनेट उपलब्ध होना (टेलनेट के लिए डेमॉन सुनना) एक बहुत गंभीर सुरक्षा दोष है, एक दोष जो प्राथमिक कारण है वह है पसंदीदा रिमोट कंसोल।
ज़ालोरस

पोर्ट 22 पर ssh डेमॉन की जांच के लिए टेलनेट क्लाइंट का उपयोग करना सुरक्षा दोष नहीं है। पोर्ट 23 पर टेलनेट डेमन से कनेक्ट करने के लिए टेलनेट क्लाइंट का उपयोग करना सुरक्षा दोष है।
डैन एंडरसन

0

मेरे मामले में गलती से सॉकेट प्रॉक्सी था (जो काम नहीं कर रहा है)। मुझे बिल्कुल वही ssh -vvv आउटपुट और खाली sshd लॉग मिला।


0

त्रुटि ssh_exchange_identification: Connection closed by remote hostकुछ अज्ञात कारणों से हो सकती है। जब मैं Visual Studio कोड का उपयोग कर रहा था । वही त्रुटि तब हुई जब मैंने git pullकमांड का उपयोग करके रिमोट रेपो से खींचने की कोशिश की ।

मैंने बस एम्बेडेड टर्मिनल को बंद कर दिया और उबंटू के टर्मिनल को खोल दिया और फिर से खींच लिया। और यह सफल रहा


0

एक कनेक्शन के पीछे के साथ के CentOS Linux release 7.4.1708 (Core)साथ OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017मैं बंदरगाहों को छानने नहीं था:

ssh_exchange_identification: दूरस्थ होस्ट द्वारा बंद किया गया कनेक्शन

और यह पता चला कि मेरा रास्पबेरी पाई बंद था!

मैं सोच रहा था कि जिस होस्ट को संचालित नहीं किया गया है, उसे "होस्ट करने के लिए कोई मार्ग नहीं" त्रुटि उत्पन्न होगी। रास्पबेरी पाई मेरे आईएसपी राउटर के पीछे है, इसलिए संभवतः यह वह है जो कनेक्शन बंद कर रहा था।

फिर मैंने एक और इंटरनेट कनेक्शन से प्रयोग को दोहराया (रास्पबेरी पाई से संचालित कनेक्शन का प्रयास) भी डेबियन स्ट्रेच के साथ बंदरगाहों को फ़िल्टर नहीं कर OpenSSH_7.4p1 Debian-10+deb9u3, OpenSSL 1.0.2l 25 May 2017रहा था और इस बार मुझे उम्मीद थी:

ओई रास्ता नहीं है होस्ट के लिए

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