E lokale SOCKS-Lauschterer aus enger AsyncSSH-Verbindung
Erstellt eng dynamesch TCP-Weiderleitung mat der forward_socks-API vun AsyncSSH a haalt de Lauschterer um asyncio-Eventloop lieweg.
AsyncSSH bitt dynamesch TCP-Weiderleitung iwwer forward_socks(). Eng Applikatioun, déi AsyncSSH schonn huet, kann en lokale SOCKS-Lauschterer iwwer eng SSH-Verbindung erstellen:
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())
Den SSH-Server an de Kont sinn Beispiller. Déi üblech AsyncSSH-Prüfung vun den Hostschlëssel gëllt. De Server muss déi ugefrot TCP-Weiderleitung erlaben. Als Kommandozeil-Äquivalent benotzt dem OpenSSH seng lokal dynamesch Weiderleitung déiselwecht Richtung vum SSH zum Zil.
Lokal Cliente kënnen elo 127.0.0.1:1080 als hire SOCKS-Endpunkt benotzen. All SOCKS-Ufro gëtt hiert Zil un; den SSH-Server mécht déi entspriechend erausgoend TCP-Verbindung op. D'Applikatioun muss net fir all URL en entfernten Downloader ausféieren.
D'Waarderei hält déi asynchron Funktioun am Beräich vun der Verbindung. En direkte Retour no dem Erstelle vum Lauschterer géif dëse Beräich verloossen an d'Verbindung zoumaachen, déi en dréit. Eng méi grouss asyncio-Applikatioun kann dës Verbindung op losse waarden, während se hir aner Aufgabe um selwechten Eventloop ausféiert.