’n Plaaslike SOCKS-luisteraar vanaf ’n AsyncSSH-verbinding
Skep dinamiese TCP-aansturing met AsyncSSH se forward_socks-API en hou die luisteraar lewendig op die asyncio-gebeurtenislus.
AsyncSSH bied dinamiese TCP-aansturing deur forward_socks(). ’n Toepassing wat AsyncSSH reeds beskikbaar het, kan ’n plaaslike SOCKS-luisteraar oor ’n SSH-verbinding skep:
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())
Die SSH-bediener en rekening is voorbeelde. Normale AsyncSSH-kontrole van gasheersleutels geld. Die bediener moet die versoekte TCP-aansturing toelaat. Vir ’n ekwivalent op die opdragreël gebruik OpenSSH se plaaslike dinamiese aansturing dieselfde rigting van SSH na bestemming.
Plaaslike kliënte kan nou 127.0.0.1:1080 as hul SOCKS-eindpunt gebruik. Elke SOCKS-versoek verskaf sy bestemming; die SSH-bediener open die ooreenstemmende uitgaande TCP-verbinding. Die toepassing hoef nie vir elke URL ’n afgeleë aflaaier uit te voer nie.
Die wag hou die asinchrone funksie binne die verbindingsbestek. Om dadelik terug te keer nadat die luisteraar geskep is, sou daardie bestek verlaat en die verbinding wat dit ondersteun, sluit. ’n Groter asyncio-toepassing kan hierdie verbinding oop hou terwyl dit sy ander take op dieselfde gebeurtenislus laat loop.