Un écouteur SOCKS local depuis une connexion AsyncSSH
Créez une redirection TCP dynamique avec l'API forward_socks d'AsyncSSH et gardez l'écouteur actif sur la boucle d'événements asyncio.
AsyncSSH fournit la redirection TCP dynamique via forward_socks(). Une application disposant déjà d'AsyncSSH peut créer un écouteur SOCKS local sur une connexion 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())
Le serveur SSH et le compte sont des exemples. La vérification habituelle des clés d'hôte d'AsyncSSH s'applique. Le serveur doit autoriser la redirection TCP demandée. Pour l'équivalent en ligne de commande, la redirection dynamique locale d'OpenSSH utilise le même sens, du SSH vers la destination.
Les clients locaux peuvent désormais utiliser 127.0.0.1:1080 comme point de terminaison SOCKS. Chaque requête SOCKS fournit sa destination ; le serveur SSH ouvre la connexion TCP sortante correspondante. L'application n'a pas besoin d'exécuter un téléchargeur distant pour chaque URL.
L'attente maintient la fonction asynchrone dans la portée de la connexion. Un retour immédiat après la création de l'écouteur sortirait de cette portée et fermerait la connexion qui le supporte. Une application asyncio plus large peut garder cette connexion ouverte tout en exécutant ses autres tâches sur la même boucle d'événements.