Vietinis SOCKS klausytuvas iš AsyncSSH ryšio
Sukurkite dinaminį TCP peradresavimą naudodami AsyncSSH forward_socks API ir palaikykite klausytuvą gyvą asyncio įvykių cikle.
AsyncSSH siūlo dinaminį TCP peradresavimą per forward_socks(). Programa, kuri jau turi AsyncSSH, gali sukurti vietinį SOCKS klausytuvą per SSH ryšį:
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 serveris ir paskyra yra pavyzdžiai. Taikoma įprasta AsyncSSH pagrindinio kompiuterio raktų patikra. Serveris turi leisti prašomą TCP peradresavimą. Komandinės eilutės atitikmuo – OpenSSH vietinis dinaminis peradresavimas – naudoja tą pačią kryptį iš SSH į paskirties tašką.
Vietiniai klientai dabar gali naudoti 127.0.0.1:1080 kaip savo SOCKS galinį tašką. Kiekviena SOCKS užklausa nurodo savo paskirties tašką; SSH serveris atidaro atitinkamą išeinantį TCP ryšį. Programai nereikia kiekvienam URL paleisti nuotolinio atsisiuntėjo.
Laukimas išlaiko asinchroninę funkciją ryšio apimtyje. Jei grįžtumėte iškart sukūrę klausytuvą, išeitumėte iš šios apimties ir uždarytumėte ryšį, kuris jį palaiko. Didesnė asyncio programa gali palikti šį ryšį atvirą ir tuo pačiu įvykių ciklu vykdyti kitas užduotis.