Prosljeđivanje uspostavljenog HTTP CONNECT tunela Paramiku
Povežite Paramiko kroz odobrenu HTTP CONNECT rutu uz zadržavanje provjere SSH ključa hosta.
Nakon što HTTP CONNECT pomoćnik vrati tunel do željenog SSH servera, predajte taj tok Paramiku:
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.Zamijenite primjer hosta i učitajte ispravne known-hosts podatke implementacije. tunnel već mora voditi do istog servera. Ime hosta proslijeđeno u connect identificira SSH ključ hosta, a ne proxy.
sock interfejs prihvata otvoreni socket ili socketu sličan objekat. On ne pregovara HTTP umjesto vas. Prije nego što ga vrati, konektor mora:
- Povezati se s proxyjem i poslati valjan CONNECT zahtjev za odredište.
- Završiti svaku podržanu proxy autentifikaciju i provjeriti uspješan status tunela.
- Pročitati cijelu sekciju proxy zaglavlja, obrađujući djelimična čitanja i čuvajući bajtove iza granice.
- Ograničiti postavljanje i zatvoriti odbijene/neispravne sockete kroz svoju putanju za čišćenje.
Za taj posao koristite održavani konektor. Traženje engleske fraze uspjeha u jednom prijemnom baferu promašuje podijeljene statusne linije, promjenjiv tekst razloga i nepotpuna zaglavlja. Uspješna proxy TCP veza nije prihvaćeni SSH tunel.
Proxy mora dozvoliti traženi SSH port; dozvola za web pregledanje ne uspostavlja CONNECT pristup portu 22. 407 se javlja prije SSH prijave, dok se neuspjeh SSH računa javlja nakon tunela. Držite te račune odvojeno.
Zatvorite SSH klijenta i resurse koje posjeduje konektor kada završite. Zaustavljanje čitanja u zadatku samo po sebi ne zatvara živu vezu.