AsyncSSH прадстаўляе дынамічнае TCP-перанакіраванне праз forward_socks(). Праграма, якая ўжо мае AsyncSSH, можа стварыць лакальны SOCKS-слухач праз 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())

SSH-сервер і ўліковы запіс — прыклады. Дзейнічае звычайная праверка ключоў хаста ў AsyncSSH. Сервер павінен дазволіць запытанае TCP-перанакіраванне. Для эквівалента ў камандным радку лакальнае дынамічнае перанакіраванне OpenSSH выкарыстоўвае той жа кірунак ад SSH да прызначэння.

Лакальныя кліенты цяпер могуць выкарыстоўваць 127.0.0.1:1080 як свой SOCKS-эндпойнт. Кожны SOCKS-запыт падае сваё прызначэнне; SSH-сервер адкрывае адпаведнае зыходнае TCP-злучэнне. Праграме не трэба запускаць аддалены загрузчык для кожнага URL.

Чаканне ўтрымлівае асінхронную функцыю ў межах злучэння. Негайнае вяртанне пасля стварэння слухача выйшла б з гэтых межаў і закрыла б злучэнне, якое яго падтрымлівае. Большая праграма asyncio можа трымаць гэтае злучэнне адкрытым, выконваючы іншыя задачы ў тым жа цыкле падзей.

Падобныя артыкулы