Lokalni SOCKS osluškivač iz AsyncSSH veze
Uspostavite dinamičko TCP prosljeđivanje s AsyncSSH forward_socks API-jem i držite osluškivač živim na asyncio petlji događaja.
AsyncSSH pruža dinamičko TCP prosljeđivanje preko forward_socks(). Program koji već ima AsyncSSH može uspostaviti lokalni SOCKS osluškivač nad SSH vezom:
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 korisnički račun samo su primjeri. Vrijedi uobičajena AsyncSSH provjera ključeva poslužitelja. Poslužitelj mora dopustiti zatraženo TCP prosljeđivanje. Kao ekvivalent u naredbenom retku, lokalno dinamičko prosljeđivanje OpenSSH-a rabi isti smjer od SSH-a prema odredištu.
Lokalni klijenti odsad mogu rabiti 127.0.0.1:1080 kao svoju SOCKS završnu točku. Svaki SOCKS zahtjev navodi odredište; SSH poslužitelj otvara pripadajuću odlaznu TCP vezu. Program ne mora pokretati udaljeni preuzimač za svaki URL.
Čekanje drži asinkronu funkciju unutar dosega veze. Povratak odmah nakon stvaranja osluškivača napustio bi taj doseg i zatvorio vezu koja ga nosi. Veći asyncio program može držati tu vezu otvorenom dok izvršava ostale zadatke na istoj petlji događaja.