AsyncSSH ofertas dinamikan TCP-plusendadon per forward_socks(). Aplikaĵo, kiu jam havas AsyncSSH, povas krei lokan SOCKS-aŭskultanton super SSH-konekto:

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())

La SSH-servilo kaj la konto estas ekzemploj. Aplikiĝas la kutima kontrolado de gastigantaj ŝlosiloj de AsyncSSH. La servilo devas permesi la petitan TCP-plusendadon. Por la komandlinia ekvivalento, la loka dinamika plusendado de OpenSSH uzas la saman direkton de SSH al la celo.

Lokaj klientoj nun povas uzi 127.0.0.1:1080 kiel sian SOCKS-finejon. Ĉiu SOCKS-peto donas sian celon; la SSH-servilo malfermas la respondan elirantan TCP-konekton. La aplikaĵo bezonas ne lanĉi malproksiman elŝutilon por ĉiu URL.

La atendo tenas la nesinkronan funkcion ene de la konekta amplekso. Tuja reveno post krei la aŭskultanton forlasus tiun amplekson kaj fermus la konekton, kiu subtenas ĝin. Pli granda asyncio-aplikaĵo povas teni ĉi tiun konekton malferma dum ĝi plenumas siajn aliajn taskojn sur la sama eventbuklo.

Rilataj artikoloj