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 גדול יותר יכול להשאיר חיבור זה פתוח תוך הרצת משימותיו האחרות באותה לולאת אירועים.

מאמרים קשורים