OpenSSH 6.x क्लाइंट कनेक्शन पर स्ट्रिंग क्यों भेजता है लेकिन 5.x नहीं करता है?


1

TL; DR: OpenSSH 6.x के लिए ssh क्लाइंट को कनेक्ट करते समय तुरंत "OpenSSH_6.2p2" स्ट्रिंग क्यों भेजता है, और OpenSSH 5.x क्लाइंट कुछ भी नहीं भेजता है?


मैं एक HTTP / S प्रॉक्सी के माध्यम से एक ssh सुरंग प्राप्त करने की कोशिश कर रहा हूं। मैं एक HTTP कनेक्शन अनुरोध का उपयोग करके एक टीसीपी कनेक्शन प्राप्त कर सकता हूं, जिसे ठीक से सुरंग में रखा गया है। यह मेरे मैक OSX 10.9 पर SSH क्लाइंट के साथ सही ढंग से काम करता है, लेकिन पुराने OSX को चलाने वाले पुराने मैक के साथ काम नहीं करता है।

इससे निम्नलिखित विषमता पैदा हुई, जिसे समझाने के लिए मैं खो गया हूं। (यह SSH प्रोटोकॉल से परिचित किसी व्यक्ति के लिए एक मूर्खतापूर्ण प्रश्न हो सकता है, लेकिन थोड़ा खोज करने के बाद मुझे इस बात का एक सरल विवरण नहीं मिल सकता है कि उस प्रोटोकॉल को क्या माना जाता है, और मुझे पूरे RFC को क्रम में नहीं पढ़ने की उम्मीद है इसे डीबग करने के लिए; इस प्रकार यह पोस्ट।)


OpenSSH_6.2p2 के साथ Mac OSX 10.9 पर:

टर्मिनल 1:

nc -l 127.0.0.1 5000

टर्मिनल 2:

ssh test@127.0.0.1 -p 5000

टर्मिनल 1 फिर आउटपुट:

OpenSSH_6.2p2

तो इस नए क्लाइंट ने कनेक्शन पर उस स्ट्रिंग को प्रसारित किया।


CentOS 6.3 पर OpenSSH_5.3p1 के साथ:

टर्मिनल 1 और 2 ऊपर के समान ही आदेश देता है।

लेकिन टर्मिनल 1 कुछ भी आउटपुट नहीं करता है। ऐसा लगता है कि इस पुराने ग्राहक ने कनेक्शन पर कुछ भी नहीं भेजा।


टीसीपी कनेक्शन खुद ही इसे सही ढंग से काम कर रहा है जो मैं बता सकता हूं। यह एक प्रोटोकॉल अंतर है। लेकिन ये दोनों जाहिरा तौर पर SSH "संस्करण 2" प्रोटोकॉल का उपयोग कर रहे हैं।

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

क्या कोई समझता है कि यहाँ क्या चल रहा है? या शायद पता है कि जहां एक सरल 1,2,3 प्रकार का स्पष्टीकरण है, जो इस प्रोटोकॉल और संस्करण अंतर पर किसी भी जानकारी के लिए क्या भेजता है?

जवाबों:


1

इसे यहाँ कवर किया गया है: https://tools.ietf.org/html/rfc4253#section-4.2

क्लाइंट और सर्वर दोनों को कनेक्शन पर अपने संस्करण के तार भेजने चाहिए। हालाँकि ऐसा प्रतीत होता है कि पुराने संस्करणों में क्लाइंट स्ट्रिंग भेजने से पहले सर्वर का इंतजार कर रहा है - जो एक कार्यान्वयन विवरण की तरह लगता है जो तकनीकी रूप से एक बग है (संभवतः SSH 6.x में तय किया गया है) लेकिन सामान्य रूप से अभ्यास में कोई समस्या नहीं पैदा करता है ।

अगर किसी को दिलचस्पी है, तो यहां मैं हल करने की कोशिश कर रहा था: https://github.com/bradleypeabody/proxyman/blob/master/README.md

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