Fabric के दूरस्थ कमांड SSH से होकर जाते हैं। उस SSH कनेक्शन को SOCKS सर्वर से होकर ले जाने के लिए Fabric को ऐसा कनेक्टर दें जो SOCKS बोलता है और गंतव्य की बाइट स्ट्रीम लौटाता है।

Fabric 2 में पेश किया गया Connection API एक कमांड स्ट्रिंग को अपने gateway के रूप में स्वीकार करता है। Fabric उस स्ट्रिंग को ProxyCommand के रूप में इस्तेमाल करता है। अगर उसके प्रॉक्सी विकल्पों का समर्थन करने वाला पहले से मौजूद OpenBSD-संगत nc हो, तो कॉन्फ़िगरेशन ऐसा हो सकता है:

from fabric import Connection

connection = Connection(
    "app.example.net",
    user="deploy",
    gateway="nc -X 5 -x proxy.example.net:1080 %h %p",
)

यह उदाहरण सामान्य SSH पोर्ट, 22 इस्तेमाल करता है। कनेक्टर का -X 5 SOCKS5 चुनता है, जबकि -x प्रॉक्सी का अंतिम बिंदु बताता है। होस्ट और पोर्ट के प्लेसहोल्डर SSH गंतव्य देते हैं। किसी सार्वजनिक SSH गंतव्य के लिए, SOCKS5 प्रॉक्सी सूची से कोई अप्रमाणित अंतिम बिंदु प्रॉक्सी पता भर सकता है, बशर्ते वह उस गंतव्य और पोर्ट की अनुमति देता हो। कमांड को मशीन पर स्थापित वास्तविक कनेक्टर के विकल्पों के साथ कॉन्फ़िगर करें; nc नाम के सभी प्रोग्राम एक जैसा इंटरफ़ेस नहीं देते।

कनेक्टर स्थानीय रूप से चलता है, वहीं जहाँ Fabric चलता है। एप्लिकेशन सर्वर को यह सहायक केवल इसलिए नहीं चाहिए कि वह SSH गंतव्य है। स्ट्रीम स्थापित होने के बाद Fabric अब भी SSH बातचीत करता है और deploy खाते को app.example.net पर प्रमाणित करता है। SOCKS सर्वर द्वारा माँगा गया कोई भी प्रमाणीकरण कनेक्टर का है और उसे उसके द्वारा समर्थित होना चाहिए।

Fabric SSH कॉन्फ़िगरेशन से भी ProxyCommand पढ़ सकता है। जब एक ही मार्ग कई SSH टूल इस्तेमाल करते हैं तो यह सुविधाजनक हो सकता है। कनेक्शन के लिए एक इच्छित गेटवे परिभाषा इस्तेमाल करें, बजाय इसके कि कमांड-शैली के गेटवे को उसी गंतव्य के लिए अलग जंप-होस्ट गेटवे के साथ जोड़ा जाए।

जब बिचौलिया एक SSH सर्वर हो

Fabric का Connection ऑब्जेक्ट जब gateway के रूप में दिया जाता है तो इसका अर्थ अलग होता है: Fabric उस SSH गेटवे से जुड़ता है और अंतिम होस्ट तक एक चैनल माँगता है। SSH जंप होस्ट के लिए वही रूप इस्तेमाल करें। SOCKS श्रोता SSH सर्वर नहीं है, इसलिए उसे ऊपर वाला कमांड-शैली कनेक्टर चाहिए।

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

संबंधित लेख