AsyncSSH piedāvā dinamisku TCP pāradresēšanu, izmantojot forward_socks(). Programma, kurai jau ir AsyncSSH, var izveidot vietēju SOCKS klausītāju virs SSH savienojuma:

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 un konts ir piemēri. Tiek piemērota ierastā AsyncSSH resursdatora atslēgu pārbaude. Serverim jāatļauj pieprasītā TCP pāradresēšana. Komandrindas ekvivalents — OpenSSH vietējā dinamiskā pāradresēšana — izmanto to pašu virzienu no SSH uz galamērķi.

Vietējie klienti tagad var izmantot 127.0.0.1:1080 kā savu SOCKS galapunktu. Katrs SOCKS pieprasījums norāda savu galamērķi; SSH serveris atver atbilstošo izejošo TCP savienojumu. Programmai nav katram URL jāpalaiž attālināts lejupielādētājs.

Gaidīšana notur asinhrono funkciju savienojuma tvērumā. Tūlītēja atgriešanās pēc klausītāja izveides pamestu šo tvērumu un aizvērtu savienojumu, kas to uztur. Lielāka asyncio programma var turēt šo savienojumu atvērtu, vienlaikus izpildot citus uzdevumus tajā pašā notikumu cilpā.

Saistītie raksti