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 келіссөзін жүргізбейді. Оны қайтару алдында қосқыш:

  1. Проксиге қосылып, мақсатқа жарамды CONNECT сұрауын жіберуі керек.
  2. Қолдау көрсетілетін кез келген прокси аутентификациясын аяқтап, туннельдің сәтті мәртебесін растауы керек.
  3. Прокси тақырыпшаларының толық бөлігін оқып, ішінара оқуларды өңдеп, шекарадан тыс байттарды сақтауы керек.
  4. Орнатуды шектеп, қабылданбаған/қате сокеттерді өзінің тазалау жолы арқылы жабуы керек.

Бұл жұмыс үшін қолдау көрсетілетін қосқышты пайдаланыңыз. Бір қабылдау буферінен ағылшынша сәттілік тіркесін іздеу бөлінген мәртебе жолдарын, өзгермелі себеп мәтінін және толық емес тақырыпшаларды жіберіп алады. Сәтті прокси TCP қосылымы қабылданған SSH туннелі емес.

Прокси сұралған SSH портына рұқсат беруі керек; веб-шолу рұқсаты 22 портына CONNECT қатынасын орнатпайды. 407 SSH кіруінен бұрын пайда болады, ал SSH тіркелгісінің сәтсіздігі туннельден кейін пайда болады. Бұл тіркелгілерді бөлек ұстаңыз.

Аяқтаған кезде SSH клиентін және қосқышқа тиесілі ресурстарды жабыңыз. Тапсырманың оқуды тоқтатуы өздігінен белсенді қосылымды жабпайды.

Қатысты мақалалар