AsyncSSH कनेक्शन से स्थानीय SOCKS श्रोता
AsyncSSH के forward_socks API से गतिशील TCP फ़ॉरवर्डिंग बनाएँ और श्रोता को asyncio इवेंट लूप पर जीवित रखें।
AsyncSSH forward_socks() के ज़रिए गतिशील TCP फ़ॉरवर्डिंग देता है। जिस एप्लिकेशन के पास AsyncSSH पहले से है, वह SSH कनेक्शन पर स्थानीय SOCKS श्रोता बना सकता है:
import asyncio
import asyncssh
async def main():
async with asyncssh.connect(
'jump.example.net', username='operator'
) as connection:
listener = await connection.forward_socks('127.0.0.1', 1080)
await listener.wait_closed()
asyncio.run(main())
SSH सर्वर और खाता उदाहरण हैं। AsyncSSH का सामान्य होस्ट-कुंजी सत्यापन लागू होता है। सर्वर को अनुरोधित TCP फ़ॉरवर्डिंग की अनुमति देनी चाहिए। कमांड-लाइन समकक्ष के लिए, OpenSSH का स्थानीय गतिशील फ़ॉरवर्ड SSH से गंतव्य तक वही दिशा इस्तेमाल करता है।
स्थानीय क्लाइंट अब 127.0.0.1:1080 को अपने SOCKS एंडपॉइंट के रूप में इस्तेमाल कर सकते हैं। हर SOCKS अनुरोध अपना गंतव्य देता है; SSH सर्वर उससे जुड़ा बहिर्गामी TCP कनेक्शन खोलता है। एप्लिकेशन को हर URL के लिए दूरस्थ डाउनलोडर चलाने की ज़रूरत नहीं है।
प्रतीक्षा अतुल्यकालिक फ़ंक्शन को कनेक्शन के दायरे में रखती है। श्रोता बनाने के तुरंत बाद लौटने से वह दायरा छूट जाता और उसे सहारा देने वाला कनेक्शन बंद हो जाता। बड़ा asyncio एप्लिकेशन इस कनेक्शन को खुला रख सकता है और अपने बाकी कार्य उसी इवेंट लूप पर चला सकता है।