AsyncSSH-ը դինամիկ TCP փոխանցում է տրամադրում forward_socks()-ի միջոցով։ Այն ծրագիրը, որն արդեն ունի 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 ծրագիրը կարող է այս միացումը բաց պահել՝ իր մյուս առաջադրանքները նույն իրադարձությունների ցիկլում կատարելիս։

Առնչվող հոդվածներ