AsyncSSH ให้การส่งต่อ TCP แบบไดนามิกผ่าน forward_socks() แอปพลิเคชันที่มี AsyncSSH อยู่แล้วสามารถสร้างตัวรับฟัง SOCKS ภายในเครื่องบนการเชื่อมต่อ 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())

เซิร์ฟเวอร์ SSH และบัญชีเป็นเพียงตัวอย่าง การตรวจสอบคีย์โฮสต์ตามปกติของ AsyncSSH ยังมีผล เซิร์ฟเวอร์ต้องอนุญาตการส่งต่อ TCP ที่ร้องขอ สำหรับสิ่งที่เทียบเท่าบนบรรทัดคำสั่ง การส่งต่อแบบไดนามิกภายในเครื่องของ OpenSSH ใช้ทิศทางเดียวกันจาก SSH ไปยังปลายทาง

ไคลเอนต์ภายในเครื่องใช้ 127.0.0.1:1080 เป็นปลายทาง SOCKS ของตนได้แล้ว คำขอ SOCKS แต่ละครั้งระบุปลายทางของตน เซิร์ฟเวอร์ SSH จะเปิดการเชื่อมต่อ TCP ขาออกที่สอดคล้องกัน แอปพลิเคชันไม่ต้องเรียกตัวดาวน์โหลดระยะไกลสำหรับทุก URL

การรอทำให้ฟังก์ชันอะซิงโครนัสอยู่ในขอบเขตของการเชื่อมต่อ การกลับทันทีหลังจากสร้างตัวรับฟังจะออกจากขอบเขตนั้นและปิดการเชื่อมต่อที่ค้ำจุนมันไว้ แอปพลิเคชัน asyncio ที่ใหญ่ขึ้นสามารถเปิดการเชื่อมต่อนี้ไว้พร้อมกับทำงานอื่นบน event loop เดียวกัน

บทความที่เกี่ยวข้อง