AsyncSSH pakub dünaamilist TCP-edastust forward_socks() kaudu. Rakendus, millel on AsyncSSH juba olemas, saab SSH-ühenduse kohal luua kohaliku SOCKS-kuulaja:

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 ja konto on näited. Kehtib tavaline AsyncSSH hostvõtme kontroll. Server peab lubama taotletud TCP-edastust. Käsureal teeb sama OpenSSH kohalik dünaamiline edastus, mis kasutab sama suunda SSH-st sihtkohta.

Kohalikud kliendid saavad nüüd kasutada 127.0.0.1:1080 oma SOCKS-lõpp-punktina. Iga SOCKS-päring esitab oma sihtkoha; SSH-server avab vastava väljuva TCP-ühenduse. Rakendus ei pea iga URL-i jaoks käivitama kaugallalaadijat.

Ootamine hoiab asünkroonse funktsiooni ühenduse ulatuses. Kohe pärast kuulaja loomist naasmine väljuks sellest ulatusest ja sulgeks ühenduse, mis seda toetab. Suurem asyncio rakendus saab hoida seda ühendust avatuna, täites samal sündmuste tsüklil oma teisi ülesandeid.

Seotud artiklid