Un receptor SOCKS local desde unha conexión AsyncSSH
Crea un reenvío TCP dinámico coa API forward_socks de AsyncSSH e mantén vivo o receptor no bucle de eventos de asyncio.
AsyncSSH ofrece reenvío TCP dinámico mediante forward_socks(). Unha aplicación que xa dispón de AsyncSSH pode crear un receptor SOCKS local sobre unha conexión 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())
O servidor SSH e a conta son exemplos. Aplícase a comprobación habitual de claves de host de AsyncSSH. O servidor debe permitir o reenvío TCP solicitado. Como equivalente na liña de comandos, o reenvío dinámico local de OpenSSH usa a mesma dirección de SSH ao destino.
Os clientes locais xa poden usar 127.0.0.1:1080 como o seu punto final SOCKS. Cada solicitude SOCKS indica o seu destino; o servidor SSH abre a conexión TCP saínte correspondente. A aplicación non precisa executar un descargador remoto para cada URL.
A espera mantén a función asíncrona dentro do ámbito da conexión. Volver de inmediato tras crear o receptor sairía dese ámbito e pecharía a conexión que o sostén. Unha aplicación asyncio maior pode manter esta conexión aberta mentres executa as súas outras tarefas no mesmo bucle de eventos.