مستمع SOCKS محلي من اتصال AsyncSSH
أنشئ إعادة توجيه TCP ديناميكية عبر واجهة forward_socks في AsyncSSH وأبقِ المستمع حيًّا على حلقة أحداث asyncio.
يوفّر AsyncSSH إعادة توجيه TCP الديناميكية عبر forward_socks(). ويمكن لتطبيق يملك AsyncSSH بالفعل أن ينشئ مستمع SOCKS محليًا فوق اتصال SSH:
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 الصادر المقابل. ولا يحتاج التطبيق إلى تشغيل أداة تنزيل بعيدة لكل رابط.
يبقي الانتظار الدالة غير المتزامنة داخل نطاق الاتصال. فالعودة فورًا بعد إنشاء المستمع ستخرج من ذلك النطاق وتغلق الاتصال الذي يدعمه. ويمكن لتطبيق asyncio أكبر إبقاء هذا الاتصال مفتوحًا أثناء تشغيل مهامه الأخرى على حلقة الأحداث نفسها.