Pendengar SOCKS setempat daripada sambungan AsyncSSH
Cipta pemajuan TCP dinamik dengan API forward_socks AsyncSSH dan kekalkan pendengar hidup pada gelung peristiwa asyncio.
AsyncSSH menyediakan pemajuan TCP dinamik melalui forward_socks(). Aplikasi yang sudah mempunyai AsyncSSH boleh mencipta pendengar SOCKS setempat di atas sambungan 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())
Pelayan SSH dan akaun hanyalah contoh. Pemeriksaan kunci hos AsyncSSH yang biasa terpakai. Pelayan mesti membenarkan pemajuan TCP yang diminta. Sebagai padanan baris arahan, pemajuan dinamik setempat OpenSSH menggunakan arah yang sama dari SSH ke destinasi.
Klien setempat kini boleh menggunakan 127.0.0.1:1080 sebagai titik akhir SOCKS mereka. Setiap permintaan SOCKS memberikan destinasinya; pelayan SSH membuka sambungan TCP keluar yang sepadan. Aplikasi tidak perlu menjalankan pemuat turun jauh bagi setiap URL.
Penantian mengekalkan fungsi tak segerak di dalam skop sambungan. Kembali serta-merta selepas mencipta pendengar akan keluar daripada skop itu dan menutup sambungan yang menyokongnya. Aplikasi asyncio yang lebih besar boleh membiarkan sambungan ini terbuka sambil menjalankan tugas lain pada gelung peristiwa yang sama.