ssh बातचीत करने में असमर्थ - कोई मिलान कुंजी विनिमय विधि नहीं मिली


32

मैं अपने DSL राउटर में लॉग इन करने की कोशिश कर रहा हूं, क्योंकि मुझे कमांड-लाइन मेल से परेशानी हो रही है। मैं राउटर को फिर से कॉन्फ़िगर करने में सक्षम होने की उम्मीद कर रहा हूं।

जब मैं sshआज्ञा देता हूं , तो यही होता है:

$ ssh enduser@10.255.252.1

Unable to negotiate with 10.255.252.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

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

$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 enduser@10.255.252.1

Unable to negotiate with 10.255.252.1 port 22: no matching cipher found. Their offer: 3des-cbc

तो वहाँ एन्क्रिप्शन की पेशकश करने के लिए एक आदेश है 3des-cbc? मैं 3 डी के बारे में निश्चित नहीं हूं, जैसे कि मैं इसे अपने सिस्टम में स्थायी रूप से जोड़ना चाहता हूं।

क्या 3des-cbcसिफर की अनुमति देने की आज्ञा है ?

यहां क्या समस्या है? यह पासवर्ड के लिए नहीं पूछ रहा है।


1
शायद यह पहले से ही यहां
एडुआर्डो बैइटेलो

1
Ssh के पास कई अलग-अलग एन्क्रिप्शन एल्गोरिदम हैं जो इसका उपयोग कर सकते हैं, और आपके क्लाइंट और सर्वर के बीच कोई आम नहीं है। ssh -o KexAlgorithms=diffe-hellman-group-sha1 enduser@10.255.252.1अपने क्लाइंट को पुराने, कम सुरक्षित एल्गोरिदम का उपयोग करने के लिए मजबूर करने का प्रयास करें , और देखें कि क्या आपके राउटर के लिए हाल ही में फर्मवेयर है या नहीं।
इकारस

1
ssh -vvv ...सर्वर द्वारा प्रस्तुत सभी प्रमुख एक्सचेंज और सिफर प्रोटोकॉल को प्रकट करेगा।
डेविड फ़ॉर्स्टर

जवाबों:


47

यह विशेष त्रुटि तब होती है जब एन्क्रिप्ट किया गया चैनल सेट किया जा रहा हो। यदि आपका सिस्टम और रिमोट सिस्टम कम से कम एक सिफर साझा नहीं करते हैं, तो सहमत होने के लिए कोई सिफर नहीं है और कोई एन्क्रिप्टेड चैनल संभव नहीं है। आमतौर पर SSH सर्वर विभिन्न ग्राहकों को पूरा करने के लिए अलग-अलग साइफर का एक छोटा सा प्रस्ताव देंगे; मुझे यकीन नहीं है कि आपके सर्वर को केवल 3DES-CBC की अनुमति देने के लिए कॉन्फ़िगर क्यों किया जाएगा।

अब, 3DES-CBC भयानक नहीं है। यह धीमा है, और यह कुछ अन्य एल्गोरिदम की तुलना में कम सुरक्षा प्रदान करता है, लेकिन जब तक कुंजियों को ठीक से नहीं चुना जाता है, तब तक यह तुरंत टूटने योग्य नहीं है। CBC के पास स्वयं कुछ मुद्दे हैं जब सिफर को पारगमन में संशोधित किया जा सकता है, लेकिन मुझे दृढ़ता से संदेह है कि परिणामी भ्रष्टाचार को SSH के HMAC द्वारा खारिज कर दिया जाएगा, जिससे प्रभाव कम होगा। निचला रेखा, 3DES-CBC से भी बदतर विकल्प हैं, और बेहतर हैं। हालाँकि, सुरक्षा संबंधी चूक को ओवरराइड करते समय हमेशा सावधानी से चलना चाहिए, जिसमें सिफर और प्रमुख एक्सचेंज एल्गोरिदम विकल्प शामिल हैं।उन चूक एक कारण के लिए चूक हैं; कुछ सुंदर स्मार्ट लोगों ने विकल्पों पर विचार करते हुए कुछ दिमागी शक्ति खर्च की और यह निर्धारित किया कि चूक के रूप में जो चुना गया था वह सर्वश्रेष्ठ समग्र सुरक्षा बनाम प्रदर्शन व्यापार बंद प्रदान करता है।

जैसा कि आपको पता चला है, आप ग्राहक की ओर से किस साइफर को निर्दिष्ट करने के लिए -c ...(या -oCiphers=...) का उपयोग कर सकते हैं । इस मामले में जोड़ना -c 3des-cbcक्लाइंट से केवल 3DES-CBC की अनुमति देता है। चूंकि यह एक सिफर से मेल खाता है जो सर्वर प्रदान करता है, एक एन्क्रिप्ट किया गया चैनल स्थापित किया जा सकता है और कनेक्शन प्रमाणीकरण चरण तक पहुंचता है।

आप इसे अपने व्यक्तिगत में भी जोड़ सकते हैं ~/.ssh/config। एक स्थानीय समस्या को हल करने के लिए एक वैश्विक परिवर्तन करने से बचने के लिए, आप इसे एक Hostश्लोक में डाल सकते हैं । उदाहरण के लिए, यदि आपका SSH कॉन्फिगर वर्तमान में कहता है (डमी उदाहरण):

Port 9922

डिफ़ॉल्ट 22 के बजाय 9922 के वैश्विक डिफ़ॉल्ट पोर्ट को निर्दिष्ट करते हुए, आप उस होस्ट के लिए एक होस्ट श्लोक जोड़ सकते हैं जिसे विशेष कॉन्फ़िगरेशन की आवश्यकता है, और डिफ़ॉल्ट मामले के लिए एक वैश्विक होस्ट श्लोक। यह कुछ इस तरह हो जाएगा ...

Host 10.255.252.1
    Ciphers 3des-cbc
    KexAlgorithms +diffie-hellman-group1-sha1
Host *
    Port 9922

इंडेंटेशन वैकल्पिक है, लेकिन मुझे लगता है कि यह पठनीयता को बढ़ाता है। रिक्त लाइनों और साथ शुरू होने वाली रेखाओं #को अनदेखा किया जाता है।

यदि आप हमेशा (या अधिकतर) उस सिस्टम पर एक ही उपयोगकर्ता के रूप में लॉग इन करते हैं, तो आप उस उपयोगकर्ता नाम को भी निर्दिष्ट कर सकते हैं:

Host 10.255.252.1
    Ciphers 3des-cbc
    KexAlgorithms +diffie-hellman-group1-sha1
    User enduser
Host *
    Port 9922

Host *यदि आपके ~ / .shsh / config के साथ शुरू करने के लिए कुछ भी नहीं था, तो आपको एक श्लोक जोड़ने की आवश्यकता नहीं है , क्योंकि उस मामले में केवल संकलित-या प्रणाली-व्यापी चूक (आमतौर पर / etc / ssh / ssh_configig से होगी) उपयोग किया गया।

इस बिंदु पर, इस होस्ट से कनेक्ट करने के लिए ssh कमांड लाइन बस कम हो जाती है

$ ssh 10.255.252.1

और आपके सिस्टम के अन्य सभी उपयोगकर्ता, और आपके सिस्टम के अन्य सभी होस्ट से कनेक्शन, परिवर्तनों से अप्रभावित हैं।


मेरे मामले में मुझे Cipherलाइन को हटाना पड़ा , लेकिन फिर इसने काम किया! धन्यवाद!
carlspring

Ssh_config मैन पेज ( लिंक ) के अनुसार सिफर्स के लिए कॉन्फिग फाइल सिंटैक्स "सिफर एस " (ट्रेलिंग एस पर ध्यान दें) है।
माइक जूल

28

ठीक है मैं मैनपेज पढ़ता हूं और यह पता लगाता हूं

मैं अपनी कॉन्फ़िगर फ़ाइल को संशोधित नहीं करना चाहता था, और इसलिए मैंने मैन पेज में "सिफर" शब्द खोजा जिसने मुझे -cविकल्प दिखाया ; यह मुझे एन्क्रिप्शन प्रकार निर्दिष्ट करने की अनुमति देता है। अंतिम आदेश तब था:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c 3des-cbc enduser@10.255.252.1

4
हाथ से सिफर चुनने के साथ सावधान रहें, आप बहुत आसानी से एक कमजोर (एर) को चुन सकते हैं जब तक कि आप नहीं जानते कि आप क्या कर रहे हैं (प्रयोज्य एट अल।)।
हेमेयेल

Ditto @heemayl। 3DES-CBC इतना बुरा नहीं है, लेकिन OpenSSH के हाल ही के ish संस्करणों द्वारा कम से कम समर्थित सिफर हैं जो सभी इरादों और उद्देश्यों के लिए पूरी तरह से टूट गए हैं। सावधानी से चलना।
बजे एक CVn

3

मैं हाल ही में Ubuntu के एक नए संस्करण से कनेक्ट करने के लिए PuTTY का उपयोग करके इस समस्या में भाग गया। ऐसा लगता है कि PuTTY के पुराने संस्करणों में सिफर अपडेट नहीं हुए थे। इसलिए PuTTY के नवीनतम संस्करण को डाउनलोड करने से समस्या ठीक हो गई। वह दूसरा उपाय हो सकता है।


1
यद्यपि अक्सर राउटर को अद्यतित नहीं रखा जाता है या निर्माताओं द्वारा बहुत अच्छी तरह से समर्थन किया जाता है।
गाय

0

MacOSX और CLI comamnds (SFTP, उदाहरण के लिए) के लिए एक और जवाब: इस लेख @ http://www.openssh.com/legacy.html (OpenSSL लिगेसी ऑप्शंस) का संदर्भ लें । मुझे "बातचीत नहीं कर सका" की लगातार त्रुटि हो रही थी जिसे इस लेख में जानकारी द्वारा हल किया गया था, विशेष रूप से "~ / .ssh / config" फ़ाइल में कॉन्फ़िगरेशन पैरामीटर की सेटिंग।

BTW, मुझे यह त्रुटि तब मिली जब मेरे गंतव्य SFTP सर्वर (मेरे प्रशासन के तहत नहीं) ने आखिरकार टीएलएस 1.0 (एसएसएल एन्क्रिप्शन विकल्प) को बंद कर दिया और टीएलएस 1.1 या 1.2 की आवश्यकता है।

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