Երբ 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 ինտերֆեյսը ընդունում է բացված socket կամ socket-անման օբյեկտ։ Այն ձեր փոխարեն HTTP չի բանակցում։ Այն վերադարձնելուց առաջ միացնողը պետք է՝

  1. Միանա պրոքսիին և ուղարկի վավեր CONNECT հարցում դեպի նպատակակետը։
  2. Ավարտի ցանկացած աջակցվող պրոքսի նույնականացում և վավերացնի հաջող թունելի կարգավիճակը։
  3. Կարդա պրոքսի վերնագրերի ամբողջ բաժինը՝ մշակելով մասնակի ընթերցումները և պահպանելով սահմանից այն կողմ գտնվող բայթերը։
  4. Սահմանափակի կարգավորումը և փակի մերժված/սխալ socket-ները իր մաքրման ուղով։

Այդ աշխատանքի համար օգտագործեք պահպանվող միացնող։ Մեկ ընդունման բուֆերում անգլերեն հաջողության արտահայտություն փնտրելը բաց է թողնում բաժանված կարգավիճակի տողերը, փոփոխական պատճառի տեքստը և թերի վերնագրերը։ Հաջող պրոքսի TCP կապը ընդունված SSH թունելը չէ։

Պրոքսին պետք է թույլատրի պահանջվող SSH պորտը. վեբ զննարկման թույլտվությունը CONNECT հասանելիություն չի ստեղծում 22 պորտին։ 407-ը տեղի է ունենում SSH մուտքից առաջ, մինչդեռ SSH հաշվի ձախողումը տեղի է ունենում թունելից հետո։ Այդ հաշիվները առանձին պահեք։

Ավարտելիս փակեք SSH հաճախորդը և միացնողին պատկանող ռեսուրսները։ Առաջադրանքի ընթերցումների դադարեցումն ինքնին չի փակում ակտիվ կապը։

Առնչվող հոդվածներ