Lokálny SOCKS poslucháč z pripojenia AsyncSSH
Vytvorte dynamické presmerovanie TCP pomocou API forward_socks z AsyncSSH a udržte poslucháča nažive v slučke udalostí asyncio.
AsyncSSH poskytuje dynamické presmerovanie TCP prostredníctvom forward_socks(). Aplikácia, ktorá už má AsyncSSH, môže vytvoriť lokálneho SOCKS poslucháča cez SSH pripojenie:
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 server a účet sú príklady. Platí obvyklá kontrola kľúčov hostiteľa v AsyncSSH. Server musí povoliť požadované presmerovanie TCP. Pre ekvivalent na príkazovom riadku používa lokálne dynamické presmerovanie OpenSSH rovnaký smer z SSH k cieľu.
Lokálni klienti môžu teraz používať 127.0.0.1:1080 ako svoj koncový bod SOCKS. Každá požiadavka SOCKS uvádza svoj cieľ; SSH server otvára zodpovedajúce odchádzajúce TCP spojenie. Aplikácia nemusí pre každú URL spúšťať vzdialený sťahovač.
Čakanie udržiava asynchrónnu funkciu v rozsahu pripojenia. Okamžitý návrat po vytvorení poslucháča by tento rozsah opustil a zatvoril spojenie, ktoré ho podporuje. Väčšia aplikácia asyncio môže toto spojenie držať otvorené, zatiaľ čo v tej istej slučke udalostí bežia jej ďalšie úlohy.