Un ascultător SOCKS local dintr-o conexiune AsyncSSH
Creați redirecționare TCP dinamică cu API-ul forward_socks al AsyncSSH și mențineți ascultătorul activ pe bucla de evenimente asyncio.
AsyncSSH oferă redirecționare TCP dinamică prin forward_socks(). O aplicație care are deja AsyncSSH poate crea un ascultător SOCKS local peste o conexiune SSH:
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())
Serverul SSH și contul sunt exemple. Se aplică verificarea obișnuită a cheilor de gazdă din AsyncSSH. Serverul trebuie să permită redirecționarea TCP solicitată. Ca echivalent în linia de comandă, redirecționarea dinamică locală a OpenSSH folosește aceeași direcție de la SSH spre destinație.
Clienții locali pot folosi acum 127.0.0.1:1080 ca punct final SOCKS. Fiecare cerere SOCKS își indică destinația; serverul SSH deschide conexiunea TCP de ieșire corespunzătoare. Aplicația nu trebuie să ruleze un descărcător la distanță pentru fiecare URL.
Așteptarea menține funcția asincronă în domeniul conexiunii. Revenirea imediată după crearea ascultătorului ar ieși din acest domeniu și ar închide conexiunea care îl susține. O aplicație asyncio mai mare poate ține această conexiune deschisă în timp ce rulează celelalte sarcini pe aceeași buclă de evenimente.