Lokální SOCKS posluchač z připojení AsyncSSH
Vytvořte dynamické přesměrování TCP pomocí API forward_socks z AsyncSSH a udržte posluchač naživu ve smyčce událostí asyncio.
AsyncSSH poskytuje dynamické přesměrování TCP prostřednictvím forward_socks(). Aplikace, která už AsyncSSH má, může vytvořit lokální SOCKS posluchač přes SSH připojení:
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 jsou příklady. Platí obvyklá kontrola klíčů hostitele v AsyncSSH. Server musí povolit požadované přesměrování TCP. Pro ekvivalent na příkazovém řádku používá lokální dynamické přesměrování OpenSSH stejný směr ze SSH k cíli.
Lokální klienti nyní mohou používat 127.0.0.1:1080 jako svůj koncový bod SOCKS. Každý požadavek SOCKS uvádí svůj cíl; SSH server otevírá odpovídající odchozí TCP spojení. Aplikace nemusí pro každou URL spouštět vzdálený stahovač.
Čekání udržuje asynchronní funkci v rozsahu připojení. Okamžitý návrat po vytvoření posluchače by tento rozsah opustil a zavřel spojení, které jej podporuje. Větší aplikace asyncio může toto spojení držet otevřené, zatímco na stejné smyčce událostí běží její další úlohy.