AsyncSSH ulanishidan mahalliy SOCKS tinglovchisi
AsyncSSH ning forward_socks API si bilan dinamik TCP yo'naltirish yarating va tinglovchini asyncio hodisalar siklida tirik saqlang.
AsyncSSH dinamik TCP yo'naltirishni forward_socks() orqali taqdim etadi. AsyncSSH allaqachon mavjud bo'lgan dastur SSH ulanishi ustida mahalliy SOCKS tinglovchisini yaratishi mumkin:
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 serveri va hisob misollardir. AsyncSSH ning odatdagi xost kalitini tekshirishi amal qiladi. Server so'ralgan TCP yo'naltirishga ruxsat berishi kerak. Buyruq satridagi ekvivalent uchun OpenSSH ning mahalliy dinamik yo'naltirishi SSH dan manzilga qadar xuddi shu yo'nalishdan foydalanadi.
Mahalliy mijozlar endi 127.0.0.1:1080 manzilini o'zlarining SOCKS so'nggi nuqtasi sifatida ishlatishlari mumkin. Har bir SOCKS so'rovi o'z manzilini beradi; SSH serveri mos keluvchi chiquvchi TCP ulanishini ochadi. Dastur har bir URL uchun masofaviy yuklab oluvchini ishga tushirishi shart emas.
Kutish asinxron funksiyani ulanish doirasida ushlab turadi. Tinglovchi yaratilgandan so'ng darhol qaytish bu doiradan chiqib, uni qo'llab-quvvatlovchi ulanishni yopardi. Kattaroq asyncio dasturi bu ulanishni ochiq saqlab, boshqa vazifalarini o'sha hodisalar siklida bajarishi mumkin.