एक ControlMaster SSH सत्र पर प्रोग्रामेटिक रूप से पोर्ट फ़ॉरवर्डिंग जोड़ना


10

मुझे अभी ओपनएसएसएच के कंट्रोलमास्टर / कंट्रोलपाथ फीचर के बारे में पता चला है, जो आपको कई टर्मिनलों को चलाने के लिए एकल एसएसएच कनेक्शन का उपयोग करने की अनुमति देता है।

जैसा कि मैं अक्सर SSH का उपयोग एन्क्रिप्टेड और प्रमाणित VNC सत्र प्राप्त करने के लिए पोर्ट फ़ॉरवर्डिंग का उपयोग करने के लिए करता हूं। मैंने तुरंत पहचाना कि आप पोर्ट फ़ॉरवर्डिंग को एक दूरस्थ सर्वर में नहीं जोड़ सकते हैं जिसके पास आपके पास पहले से ही एक स्थापित कनेक्शन है। यह बेकार है।

कभी-कभी बाद में मुझे पता चला कि आप चल रहे SSH टर्मिनल सत्र में ~ C लिखकर इस सीमा को दरकिनार कर सकते हैं। यह एक कमांड-लाइन खोलता है जो आपको पोर्ट फ़ॉरवर्डिंग को जोड़ने या निकालने की अनुमति देता है।

मेरा उद्धरण अब यह है: मैं मौजूदा SSH सत्र पर पोर्ट फ़ॉरवर्डिंग कैसे जोड़ सकता हूं जो उस SSH सत्र के अंदर टर्मिनल सत्र तक पहुँच की आवश्यकता के बिना ControlMaster / ControlPath सुविधा का उपयोग कर रहा है। मुझे अपनी स्क्रिप्ट को सक्षम करने के लिए इसकी आवश्यकता है जो मुझे जोड़ने और बाद में इसके पोर्ट फ़ॉरवर्डिंग को निकालने के लिए एक सुरक्षित टनल VNC कनेक्शन शुरू करता है।

(मुझे पता है कि मैं एक टर्मिनल मल्टीप्लेकर जैसे कि GNU स्क्रीन या tmux का उपयोग कर सकता हूं, वास्तव में मैं यह पहले से ही कर रहा हूं। लेकिन मुझे सर्वरल कारणों से सिर्फ एक एसएसएच सत्र का उपयोग करने का विचार पसंद है।)


1
यदि आप ऐसा करने का कोई तरीका ढूंढते हैं तो मुझे देखने में बाधा होगी, लेकिन मुझे संदेह है कि आप ऐसा नहीं करेंगे। प्रोग्राम को एसएसएच सत्र के गुणों को नियंत्रित करना आप वास्तव में एक बड़ी सुरक्षा समस्या की तरह प्रतीत नहीं होते हैं।
कालेब

1
बकवास! SSH सत्र के गुणों को प्रोग्रामेटिक रूप से नियंत्रित करना एक बड़ी सुरक्षा समस्या कैसे पेश करता है? समाधान वास्तव में काफी सरल है: serverfault.com/a/340361/93109
aculich

सवाल अब केवल पोर्ट-फ़ॉरवर्डिंग को जोड़ने के बारे में पूछ रहा है ताकि यह बेहतर तरीके से स्वीकृत उत्तर से मेल खाए। मैंने उनसे बाद में उन्हें हटाने के तरीके पर एक सवाल पूछा: serverfault.com/q/457295/50950
aef

जवाबों:


10

यह वास्तव में काफी सरल है। बस -O forwardअपने मौजूदा कमांड में ctl_cmd जोड़ें , इस प्रकार:

ssh -M -L5555:localhost:22 remotehost

हो जाता है:

ssh -O forward -M -L5555:localhost:22 remotehost

sshआदमी पेज पर चर्चा करता है -O ctl_cmdविकल्प:

-O ctl_cmd
        Control an active connection multiplexing master process.  When the -O option is
        specified, the ctl_cmd argument is interpreted and passed to the master process.
        Valid commands are: “check” (check that the master process is running), “forward”
        (request forwardings without command execution), “exit” (request the master to
        exit), and “stop” (request the master to stop accepting further multiplexing
        requests).

यह, निश्चित रूप से, आप या तो ControlMaster yesअपनी ~/ssh/configफ़ाइल में या -Mकमांड लाइन पर सक्षम हैं ।


1
क्या आप कृपया संबंधित प्रश्न का उत्तर यहां देने का प्रयास कर सकते हैं: serverfault.com/q/457295/50950
aef
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.