AsyncSSH poskytuje dynamické přesměrování TCP prostřednictvím forward_socks(). Aplikace, která už AsyncSSH má, může vytvořit lokální SOCKS posluchač přes SSH připojení:

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 jsou příklady. Platí obvyklá kontrola klíčů hostitele v AsyncSSH. Server musí povolit požadované přesměrování TCP. Pro ekvivalent na příkazovém řádku používá lokální dynamické přesměrování OpenSSH stejný směr ze SSH k cíli.

Lokální klienti nyní mohou používat 127.0.0.1:1080 jako svůj koncový bod SOCKS. Každý požadavek SOCKS uvádí svůj cíl; SSH server otevírá odpovídající odchozí TCP spojení. Aplikace nemusí pro každou URL spouštět vzdálený stahovač.

Čekání udržuje asynchronní funkci v rozsahu připojení. Okamžitý návrat po vytvoření posluchače by tento rozsah opustil a zavřel spojení, které jej podporuje. Větší aplikace asyncio může toto spojení držet otevřené, zatímco na stejné smyčce událostí běží její další úlohy.

Související články