Kad HTTP CONNECT palīgs ir atgriezis tuneli uz paredzēto SSH serveri, nododiet šo straumi 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.

Aizstājiet piemēra resursdatoru un ielādējiet pareizos izvietojuma known-hosts datus. tunnel jau ir jāved uz to pašu serveri. connect nodotais resursdatora nosaukums identificē SSH resursdatora atslēgu, nevis starpniekserveri.

sock saskarne pieņem atvērtu ligzdu vai ligzdai līdzīgu objektu. Tā neveic HTTP sarunas jūsu vietā. Pirms atgriešanas savienotājam ir:

  1. Jāpievienojas starpniekserverim un jānosūta derīgs CONNECT pieprasījums galamērķim.
  2. Jāpabeidz jebkura atbalstītā starpniekservera autentifikācija un jāpārbauda veiksmīgs tuneļa statuss.
  3. Jāizlasa viss starpniekservera galveņu sadaļa, apstrādājot daļējas lasīšanas un saglabājot baitus aiz robežas.
  4. Jāierobežo iestatīšana un jāaizver noraidītās/kļūdainās ligzdas savā tīrīšanas ceļā.

Šim darbam izmantojiet uzturētu savienotāju. Meklējot angļu valodas veiksmes frāzi vienā uztveršanas buferī, tiek palaistas garām sadalītas statusa rindas, mainīgs iemesla teksts un nepilnīgas galvenes. Veiksmīgs starpniekservera TCP savienojums nav pieņemtais SSH tunelis.

Starpniekserverim jāatļauj pieprasītā SSH porta izmantošana; tīmekļa pārlūkošanas atļauja neizveido CONNECT piekļuvi 22. portam. 407 notiek pirms SSH pieteikšanās, bet SSH konta kļūme notiek pēc tuneļa. Turiet šos kontus atsevišķi.

Pabeidzot aizveriet SSH klientu un savienotājam piederošos resursus. Uzdevuma lasīšanas pārtraukšana pati par sevi neaizver aktīvu savienojumu.

Saistītie raksti