Nustatyto HTTP CONNECT tunelio perdavimas Paramiko
Prijunkite Paramiko per leistiną HTTP CONNECT maršrutą, išsaugodami SSH hosto rakto tikrinimą.
Kai HTTP CONNECT pagalbininkas grąžino tunelį į numatytą SSH serverį, perduokite tą srautą 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.Pakeiskite pavyzdinį hostą ir įkelkite teisingus diegimo known-hosts duomenis. tunnel jau turi vesti į tą patį serverį. connect perduotas hosto vardas identifikuoja SSH hosto raktą, o ne proxy.
sock sąsaja priima atvirą lizdą arba lizdą primenantį objektą. Ji nesidera dėl HTTP už jus. Prieš grąžinant jį, jungtis turi:
- Prisijungti prie proxy ir išsiųsti galiojančią CONNECT užklausą paskirties vietai.
- Užbaigti bet kokią palaikomą proxy autentifikaciją ir patvirtinti sėkmingą tunelio būseną.
- Perskaityti visą proxy antraščių sekciją, apdorojant dalinius skaitymus ir išsaugant baitus už ribos.
- Apriboti sąranką ir uždaryti atmestus/klaidingus lizdus savo valymo keliu.
Šiam darbui naudokite prižiūrimą jungtį. Ieškant angliškos sėkmės frazės viename priėmimo buferyje, praleidžiamos padalytos būsenos eilutės, kintantis priežasties tekstas ir nepilnos antraštės. Sėkmingas proxy TCP ryšys nėra priimtas SSH tunelis.
Proxy turi leisti prašomą SSH portą; žiniatinklio naršymo leidimas nesukuria CONNECT prieigos prie 22 porto. 407 įvyksta prieš SSH prisijungimą, o SSH paskyros gedimas įvyksta po tunelio. Laikykite šias paskyras atskirai.
Baigę uždarykite SSH klientą ir jungties valdomus išteklius. Užduoties skaitymų sustabdymas pats savaime neuždaro aktyvaus ryšio.