AsyncSSH холболтоос үүсгэсэн локал SOCKS сонсогч
AsyncSSH-ийн forward_socks API-аар динамик TCP дамжуулалт үүсгэж, сонсогчийг 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 програам энэ холболтыг нээлттэй байлгаж, бусад ажлаа ижил үйл явдлын давталт дээр гүйцэтгэж чадна.