Lokalni SOCKS slušatelj iz AsyncSSH veze
Stvorite dinamičko TCP prosljeđivanje pomoću AsyncSSH forward_socks API-ja i održite slušatelj živim na asyncio petlji događaja.
AsyncSSH nudi dinamičko TCP prosljeđivanje kroz forward_socks(). Aplikacija koja već ima AsyncSSH može stvoriti lokalni SOCKS slušatelj preko SSH veze:
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 poslužitelj i račun su primjeri. Primjenjuje se uobičajena AsyncSSH provjera ključa hosta. Poslužitelj mora dopustiti traženo TCP prosljeđivanje. Za ekvivalent u naredbenom retku OpenSSH-ovo lokalno dinamičko prosljeđivanje koristi isti smjer od SSH-a prema odredištu.
Lokalni klijenti sada mogu koristiti 127.0.0.1:1080 kao svoju SOCKS završnu točku. Svaki SOCKS zahtjev navodi svoje odredište; SSH poslužitelj otvara odgovarajuću odlaznu TCP vezu. Aplikacija ne mora pokretati udaljeni preuzimač za svaki URL.
Čekanje zadržava asinkronu funkciju unutar dosega veze. Trenutačni povratak nakon stvaranja slušatelja napustio bi taj doseg i zatvorio vezu koja ga podupire. Veća asyncio aplikacija može držati ovu vezu otvorenom dok izvršava svoje ostale zadatke na istoj petlji događaja.