Listener SOCKS lokal dari koneksi AsyncSSH
Buat penerusan TCP dinamis dengan API forward_socks AsyncSSH dan jaga listener tetap hidup di loop peristiwa asyncio.
AsyncSSH menyediakan penerusan TCP dinamis melalui forward_socks(). Aplikasi yang sudah memiliki AsyncSSH dapat membuat listener SOCKS lokal di atas koneksi 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())
Server SSH dan akun hanyalah contoh. Pemeriksaan kunci host AsyncSSH yang biasa tetap berlaku. Server harus mengizinkan penerusan TCP yang diminta. Sebagai padanan baris perintah, penerusan dinamis lokal OpenSSH memakai arah yang sama dari SSH ke tujuan.
Klien lokal kini dapat memakai 127.0.0.1:1080 sebagai titik akhir SOCKS mereka. Setiap permintaan SOCKS menyertakan tujuannya; server SSH membuka koneksi TCP keluar yang sesuai. Aplikasi tidak perlu menjalankan pengunduh jarak jauh untuk setiap URL.
Penantian menjaga fungsi asinkron tetap di dalam cakupan koneksi. Kembali segera setelah membuat listener akan keluar dari cakupan itu dan menutup koneksi yang menopangnya. Aplikasi asyncio yang lebih besar dapat menjaga koneksi ini tetap terbuka sambil menjalankan tugas lain di loop peristiwa yang sama.