დამყარებული HTTP CONNECT გვირაბის Paramiko-სთვის გადაცემა
დააკავშირეთ Paramiko ავტორიზებული HTTP CONNECT მარშრუტით, SSH ჰოსტის გასაღების შემოწმების შენარჩუნებით.
მას შემდეგ, რაც HTTP CONNECT დამხმარე დაბრუნდა გვირაბს სასურველ SSH სერვერთან, გადაეცით ეს ნაკადი Paramiko-ს:
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.შეცვალეთ მაგალითის ჰოსტი და ჩატვირთეთ განთავსების სწორი known-hosts მონაცემები. tunnel უკვე უნდა მიუყვანდეს იმავე სერვერს. connect-ს გადაცემული ჰოსტის სახელი SSH ჰოსტის გასაღებს განსაზღვრავს და არა პროქსის.
sock ინტერფეისი იღებს გახსნილ სოკეტს ან სოკეტის მსგავს ობიექტს. ის თქვენთვის HTTP-ზე მოლაპარაკებას არ აწარმოებს. დაბრუნებამდე კონექტორმა უნდა:
- დაუკავშირდეს პროქსის და გაგზავნოს სწორი CONNECT მოთხოვნა დანიშნულებისთვის.
- დაასრულოს ნებისმიერი მხარდაჭერილი პროქსის ავთენტიფიკაცია და დაადასტუროს წარმატებული გვირაბის სტატუსი.
- წაიკითხოს პროქსის სათაურების მთელი ნაწილი, დაამუშაოს ნაწილობრივი კითხვები და შეინარჩუნოს საზღვრის მიღმა არსებული ბაიტები.
- შეზღუდოს კონფიგურაცია და დახუროს უარყოფილი/შეცდომიანი სოკეტები თავისი გასუფთავების გზით.
ამ სამუშაოსთვის გამოიყენეთ მხარდაჭერილი კონექტორი. ერთ მიღების ბუფერში ინგლისური წარმატების ფრაზის ძებნა გამოტოვებს გაყოფილ სტატუსის სტრიქონებს, ცვალებად მიზეზის ტექსტს და არასრულ სათაურებს. წარმატებული პროქსის TCP კავშირი არ არის მიღებული SSH გვირაბი.
პროქსის უნდა დაუშვას მოთხოვნილი SSH პორტი; ვებ-დათვალიერების ნებართვა არ ამყარებს CONNECT წვდომას 22 პორტზე. 407 ხდება SSH-ში შესვლამდე, ხოლო SSH ანგარიშის ჩავარდნა გვირაბის შემდეგ ხდება. ეს ანგარიშები ცალკე შეინახეთ.
დასრულებისას დახურეთ SSH კლიენტი და კონექტორის საკუთრებაში არსებული რესურსები. დავალების კითხვის შეწყვეტა თავისთავად არ ხურავს ცოცხალ კავშირს.