ლოკალური SOCKS მსმენელი AsyncSSH კავშირიდან
შექმენით დინამიური TCP გადამისამართება AsyncSSH-ის forward_socks API-ით და შეინარჩუნეთ მსმენელი asyncio მოვლენების ციკლზე.
AsyncSSH დინამიურ TCP გადამისამართებას გვაძლევს forward_socks()-ის მეშვეობით. აპლიკაციას, რომელსაც უკვე აქვს AsyncSSH, შეუძლია SSH კავშირზე ლოკალური SOCKS მსმენელის შექმნა:
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 აპლიკაციას შეუძლია ეს კავშირი ღიად შეინარჩუნოს და სხვა დავალებები იმავე მოვლენების ციკლზე შეასრულოს.