AsyncSSH poskytuje dynamické presmerovanie TCP prostredníctvom forward_socks(). Aplikácia, ktorá už má AsyncSSH, môže vytvoriť lokálneho SOCKS poslucháča cez SSH pripojenie:

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 server a účet sú príklady. Platí obvyklá kontrola kľúčov hostiteľa v AsyncSSH. Server musí povoliť požadované presmerovanie TCP. Pre ekvivalent na príkazovom riadku používa lokálne dynamické presmerovanie OpenSSH rovnaký smer z SSH k cieľu.

Lokálni klienti môžu teraz používať 127.0.0.1:1080 ako svoj koncový bod SOCKS. Každá požiadavka SOCKS uvádza svoj cieľ; SSH server otvára zodpovedajúce odchádzajúce TCP spojenie. Aplikácia nemusí pre každú URL spúšťať vzdialený sťahovač.

Čakanie udržiava asynchrónnu funkciu v rozsahu pripojenia. Okamžitý návrat po vytvorení poslucháča by tento rozsah opustil a zatvoril spojenie, ktoré ho podporuje. Väčšia aplikácia asyncio môže toto spojenie držať otvorené, zatiaľ čo v tej istej slučke udalostí bežia jej ďalšie úlohy.

Súvisiace články