SSH फ़ॉरवर्ड स्थानीय पोर्ट 13306 पर सुनता है, लेकिन mysql फिर भी स्थानीय डेटाबेस से जुड़ता है—या बताता है कि उसका स्थानीय सॉकेट मौजूद नहीं है। Unix पर localhost दिए गए MySQL क्लाइंट TCP के बजाय Unix सॉकेट चुन सकता है। पोर्ट देना ज़रूरी नहीं कि इस चुनाव को बदले।

किसी मौजूदा स्वीकृत TCP फ़ॉरवर्ड के लिए, प्रोटोकॉल स्पष्ट करें:

mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
  --user=dbuser --password

उपयोगकर्ता नाम केवल उदाहरण है; पासवर्ड विकल्प इंटरैक्टिव इनपुट माँगता है। यह कमांड Unix सॉकेट के बजाय स्थानीय TCP श्रोता से जुड़ता है।

दोनों लॉगिन अलग रखें

एक निश्चित SSH रूट इस आकार का हो सकता है:

ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]

गेटवे का SSH सर्वर db.internal:3306 तक पहुँचता है। फिर MySQL उसी बाइट स्ट्रीम के ज़रिए डेटाबेस खाते को प्रमाणित करता है। स्वीकृत SSH कुंजी डेटाबेस लॉगिन नहीं देती, और डेटाबेस के स्रोत प्रतिबंध देखते हैं कि कनेक्शन रूट के उसी ओर से आ रहा है।

यह एक निश्चित TCP अडैप्टर है, mysql द्वारा उपभोग की जाने वाली SOCKS सेटिंग नहीं। एप्लिकेशन को SOCKS बातचीत की ज़रूरत नहीं है क्योंकि फ़ॉरवर्डिंग एंडपॉइंट का एक पूर्वनिर्धारित लक्ष्य है।

जहाँ भी उपयोग हों, डेटाबेस की इच्छित TLS पहचान और प्रमाणपत्र नीति बनाए रखें। सॉकेट को loopback से जोड़ने से डेटाबेस प्रमाणपत्र किसी दूसरे सेवा नाम के लिए मान्य नहीं हो जाता। सफल स्थानीय TCP कनेक्शन परिवहन के चुनाव का फ़ैसला करता है, बाद के डेटाबेस प्रमाणीकरण या TLS जाँचों का नहीं।

संबंधित लेख