Lokalni poslušalec SOCKS iz povezave AsyncSSH
Ustvarite dinamično posredovanje TCP z API-jem forward_socks v AsyncSSH in ohranite poslušalca živega v zanki dogodkov asyncio.
AsyncSSH ponuja dinamično posredovanje TCP prek forward_socks(). Aplikacija, ki že ima AsyncSSH, lahko ustvari lokalnega poslušalca SOCKS prek povezave 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())
Strežnik SSH in račun sta primera. Velja običajno preverjanje ključev gostitelja v AsyncSSH. Strežnik mora dovoliti zahtevano posredovanje TCP. Kot enakovredna možnost v ukazni vrstici lokalno dinamično posredovanje OpenSSH uporablja isto smer od SSH do cilja.
Lokalni odjemalci lahko zdaj uporabljajo 127.0.0.1:1080 kot svojo končno točko SOCKS. Vsaka zahteva SOCKS navede svoj cilj; strežnik SSH odpre ustrezno odhodno povezavo TCP. Aplikaciji ni treba za vsak URL zagnati oddaljenega prenašalnika.
Čakanje ohrani asinhrono funkcijo v obsegu povezave. Takojšnja vrnitev po ustvarjanju poslušalca bi zapustila ta obseg in zaprla povezavo, ki jo podpira. Večja aplikacija asyncio lahko ohrani to povezavo odprto, medtem ko izvaja svoje druge naloge v isti zanki dogodkov.