Ein lokal SOCKS-lyttar frå ei AsyncSSH-tilkopling
Lag dynamisk TCP-vidaresending med forward_socks-API-en til AsyncSSH, og hald lyttaren i live på asyncio-hendingsløkka.
AsyncSSH tilbyr dynamisk TCP-vidaresending via forward_socks(). Eit program som alt har AsyncSSH, kan lage ein lokal SOCKS-lyttar over ei SSH-tilkopling:
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-tenaren og kontoen er døme. Den vanlege AsyncSSH-kontrollen av vertsnøklar gjeld. Tenaren må tillate den førespurde TCP-vidaresendinga. Som kommandolinjeekvivalent brukar den lokale dynamiske vidaresendinga til OpenSSH same retning frå SSH til målet.
Lokale klientar kan no bruke 127.0.0.1:1080 som SOCKS-endepunktet sitt. Kvar SOCKS-førespurnad oppgir målet sitt; SSH-tenaren opnar den tilsvarande utgåande TCP-tilkoplinga. Programmet treng ikkje køyre ein ekstern nedlastar for kvar URL.
Ventinga held den asynkrone funksjonen innanfor omfanget til tilkoplinga. Å kome attende med ein gong etter at lyttaren er laga, ville forlate dette omfanget og late tilkoplinga som ber han. Eit større asyncio-program kan halde denne tilkoplinga open medan det køyrer dei andre oppgåvene sine på same hendingsløkke.