AsyncSSH, dinamik TCP yönlendirmeyi forward_socks() aracılığıyla sunar. AsyncSSH'i zaten kullanan bir uygulama, bir SSH bağlantısı üzerinde yerel bir SOCKS dinleyicisi oluşturabilir:

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 sunucusu ve hesap yalnızca örnektir. AsyncSSH'nin olağan ana makine anahtarı denetimi geçerlidir. Sunucu, istenen TCP yönlendirmesine izin vermelidir. Komut satırı karşılığında, OpenSSH'nin yerel dinamik yönlendirmesi SSH'den hedefe doğru aynı yönü kullanır.

Yerel istemciler artık 127.0.0.1:1080 adresini SOCKS uç noktaları olarak kullanabilir. Her SOCKS isteği kendi hedefini bildirir; SSH sunucusu buna karşılık gelen giden TCP bağlantısını açar. Uygulamanın her URL için uzak bir indirici çalıştırması gerekmez.

Bekleme, eşzamansız işlevi bağlantının kapsamı içinde tutar. Dinleyici oluşturulduktan hemen sonra dönmek bu kapsamdan çıkar ve onu taşıyan bağlantıyı kapatırdı. Daha büyük bir asyncio uygulaması, diğer görevlerini aynı olay döngüsünde yürütürken bu bağlantıyı açık tutabilir.

İlgili makaleler