O‘rnatilgan HTTP CONNECT tunnelini Paramiko ga uzatish
Paramiko ni ruxsat etilgan HTTP CONNECT yo‘li orqali ulang va SSH xost kaliti tekshiruvini saqlang.
HTTP CONNECT yordamchisi mo‘ljallangan SSH serveriga tunnel qaytargach, o‘sha oqimni Paramiko ga bering:
with paramiko.SSHClient() as client:
client.load_system_host_keys()
client.connect('ssh.example.com',
username='operator',
sock=tunnel,
banner_timeout=10,
auth_timeout=10)
# Use the verified SSH connection.Namunadagi xostni almashtiring va joylashtirishning to‘g‘ri known-hosts ma’lumotlarini yuklang. tunnel allaqachon o‘sha serverga olib borishi kerak. connect ga berilgan xost nomi SSH xost kalitini aniqlaydi, proksini emas.
sock interfeysi ochiq soket yoki soketga o‘xshash obyektni qabul qiladi. U siz uchun HTTP muzokaralarini olib bormaydi. Uni qaytarishdan oldin ulagich:
- Proksiga ulanib, manzil uchun haqiqiy CONNECT so‘rovini yuborishi kerak.
- Qo‘llab-quvvatlanadigan har qanday proksi autentifikatsiyasini tugatib, muvaffaqiyatli tunnel holatini tekshirishi kerak.
- Proksi sarlavhalari bo‘limini to‘liq o‘qishi, qisman o‘qishlarni boshqarishi va chegaradan tashqari baytlarni saqlashi kerak.
- Sozlashni cheklab, rad etilgan/xato soketlarni o‘z tozalash yo‘li orqali yopishi kerak.
Bu ish uchun qo‘llab-quvvatlanadigan ulagichdan foydalaning. Bitta qabul buferida inglizcha muvaffaqiyat iborasini izlash bo‘lingan holat satrlarini, o‘zgaruvchan sabab matnini va tugallanmagan sarlavhalarni o‘tkazib yuboradi. Muvaffaqiyatli proksi TCP ulanishi qabul qilingan SSH tunneli emas.
Proksi so‘ralgan SSH portiga ruxsat berishi kerak; veb-sahifa ko‘rish ruxsati 22-portga CONNECT kirishini o‘rnatmaydi. 407 SSH kirishidan oldin yuz beradi, SSH hisobi xatosi esa tunneldan keyin yuz beradi. Bu hisoblarni alohida saqlang.
Tugatgach SSH mijozi va ulagichga tegishli resurslarni yoping. Vazifaning o‘qishlarini to‘xtatishi o‘z-o‘zidan tirik ulanishni yopmaydi.