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 प्रकार का स्पष्टीकरण है, जो इस प्रोटोकॉल और संस्करण अंतर पर किसी भी जानकारी के लिए क्या भेजता है?