Ipaabot ang Isang Naitatag na HTTP CONNECT Tunnel sa Paramiko
Ikonekta ang Paramiko sa pamamagitan ng awtorisadong ruta ng HTTP CONNECT habang pinapanatili ang pagpapatunay ng host key ng SSH.
Kapag naibalik na ng katulong na HTTP CONNECT ang isang tunnel sa target na SSH server, ibigay ang stream na iyon sa 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.Palitan ang halimbawang host at i-load ang tamang data ng known-hosts ng deployment. Ang tunnel ay dapat nang tumungo sa parehong server. Ang hostname na ipinapasa sa connect ay tumutukoy sa host key ng SSH, hindi sa proxy.
Tumatanggap ang interface ng sock ng bukas na socket o bagay na parang socket. Hindi ito nakikipag-ayos ng HTTP para sa iyo. Bago ito ibalik, dapat ng connector:
- Kumonekta sa proxy at magpadala ng valid na kahilingang CONNECT para sa destinasyon.
- Kumpletuhin ang anumang sinusuportahang pagpapatunay ng proxy at patunayan ang matagumpay na estado ng tunnel.
- Basahin ang buong seksyon ng header ng proxy, pangasiwaan ang mga bahagyang pagbasa at pangalagaan ang mga byte na lampas sa hangganan.
- Limitahan ang setup at isara ang mga tinanggihang/may error na socket sa pamamagitan ng landas ng paglilinis nito.
Gumamit ng maintained na connector para sa gawaing iyon. Ang paghahanap ng Ingles na parirala ng tagumpay sa isang receive buffer ay nakakaligta ng hati na mga linya ng estado, nagbabagong teksto ng dahilan at hindi kumpletong header. Ang matagumpay na TCP connection ng proxy ay hindi ang tinatanggap na SSH tunnel.
Dapat payagan ng proxy ang hinihinging SSH port; ang pahintulot sa pag-browse sa web ay hindi nagtatatag ng access na CONNECT sa port 22. Ang 407 ay nangyayari bago ang pag-login sa SSH, habang ang pagkabigo ng account sa SSH ay nangyayari pagkatapos ng tunnel. Panatilihing hiwalay ang mga account na iyon.
Isara ang SSH client at ang mga resource na pag-aari ng connector kapag tapos na. Ang paghinto ng isang gawain sa pagbasa nito ay hindi sarili nitong nagsasara ng buhay na koneksyon.