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 می‌تواند این اتصال را باز نگه دارد و هم‌زمان کارهای دیگرش را روی همان حلقهٔ رویداد اجرا کند.

مقالات مرتبط