यह मानते हुए कि आपने यह आदेश चलाया है: ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -Nजैसा कि आपके द्वारा लिंक किए गए पोस्ट में वर्णित है।
कमांड का टूटना:
ssh: यह बहुत आत्म व्याख्यात्मक है। आह्वान करता है ssh।
-f: ( man sshपृष्ठ से)
कमांड निष्पादन से ठीक पहले पृष्ठभूमि पर जाने के लिए अनुरोध ssh। यह उपयोगी है यदि ssh पासवर्ड या पासफ़्रेज़ माँगने जा रहा है, लेकिन उपयोगकर्ता इसे पृष्ठभूमि में चाहता है।
अनिवार्य रूप से, sshकनेक्शन स्थापित करने के लिए किसी भी पासवर्ड को दर्ज करने के बाद पृष्ठभूमि पर भेजें ; यह आपको localhostलॉग इन करने के बजाए शेल को तुरंत वापस भेज देता है remote-host।
user@mysql-server.com: वह दूरस्थ सर्वर जिसे आप लॉग इन करना चाहते हैं।
-L 3306:mysql-server.com:3306: यह दिलचस्प बिट है। -L( man sshपेज से):
[bind_address:] पोर्ट: होस्ट: होस्टपोर्ट निर्दिष्ट करता है कि स्थानीय (क्लाइंट) होस्ट पर दिए गए पोर्ट को दिए गए होस्ट और पोर्ट पर पोर्ट को अग्रेषित किया जाना है।
इसलिए स्थानीय पोर्ट को होस्ट पर दूरस्थ पोर्ट से -L 3306:mysql-server.com:3306बांधता है ।3306 3306mysql-server.com
जब आप स्थानीय पोर्ट से कनेक्ट करते हैं 3306, तो कनेक्शन को सुरक्षित चैनल पर अग्रेषित किया जाता है mysql-server.com। दूरस्थ होस्ट , mysql-server.comतो को जोड़ता mysql-server.comपोर्ट पर 3306।
-N: एक कमांड निष्पादित नहीं करते। यह "सिर्फ फॉरवर्डिंग पोर्ट्स" (मैन पेज को उद्धृत करते हुए) के लिए उपयोगी है।
क्या यह कमांड सर्वर पर कुछ भी प्रभावित करता है?
हां, यह लोकलहोस्ट और mysql-server.com के बीच पोर्ट 3306 पर एक कनेक्शन स्थापित करता है ।
और मैं इस सुरंग को कैसे बंद करूं ...
यदि आपने उपयोग किया है -f, तो आप देखेंगे कि sshआपने पृष्ठभूमि में सिर खोला है। बंद करने इसे चलाने के लिए है की अच्छे विधि ps aux | grep 3306, लगता है pidकी ssh -f ... -L 3306:mysql-server.com:3306 -N, और kill <pid>। (या हो सकता है kill -9 <pid>; मैं भूल जाता हूं अगर सिर्फ killकाम करता है)। यह आपके अन्य सभी कनेक्शनों को न मारने का सुंदर लाभ है ssh; यदि आप एक से अधिक हो गए हैं, तो उन्हें फिर से स्थापित करना एक मामूली ... दर्द हो सकता है।
... क्योंकि अब मैं अपने स्थानीय mysql का उपयोग ठीक से नहीं कर सकता।
ऐसा इसलिए है क्योंकि आपने स्थानीय mysql प्रक्रिया को प्रभावी रूप से "कैप्चर" कर लिया है और किसी भी ट्रैफ़िक को अग्रेषित कर दिया है, जो इसे कनेक्ट करने का प्रयास करता है, दूरस्थ mysql प्रक्रिया से। एक बहुत अच्छा समाधान होगा कि पोर्ट-फॉरवर्ड में स्थानीय पोर्ट 3306 का उपयोग न करें । ऐसी किसी चीज़ का उपयोग करें जिसका उपयोग नहीं किया गया है, जैसे 33060. (उच्च संख्या आमतौर पर कम उपयोग की जाती है; यह इस तरह के संयोजन को पोर्ट-फॉरवर्ड करने के लिए बहुत आम है: "2525-> 25", "8080-> 80", "33060-> 3306" या इसी तरह। थोड़ा आसान याद करता है)।
इसलिए, यदि आप उपयोग करते हैं, तो आप पोर्ट पर ssh -f user@mysql-server.com -L 33060:mysql-server.com:3306 -Nअपने Zend कनेक्ट-टू-mysql फ़ंक्शन को इंगित करेंगे, जो पोर्ट पर कनेक्ट होगा । आप स्पष्ट रूप से अभी भी पोर्ट पर कनेक्ट कर सकते हैं, इसलिए आप अभी भी स्थानीय सर्वर का उपयोग कर सकते हैं ।localhost33060mysql-server.com3306localhost3306mysql