Een bestaande HTTP CONNECT-tunnel aan Paramiko doorgeven
Verbind Paramiko via een geautoriseerde HTTP CONNECT-route met behoud van SSH-hostsleutelverificatie.
Zodra een HTTP CONNECT-hulpprogramma een tunnel naar de bedoelde SSH-server heeft teruggegeven, geef je die stream aan 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.Vervang de voorbeeldhost en laad de juiste known-hosts-gegevens van de implementatie. tunnel moet al naar dezelfde server leiden. De hostnaam die aan connect wordt doorgegeven, identificeert de SSH-hostsleutel, niet de proxy.
De sock-interface accepteert een open socket of een socketachtig object. Deze onderhandelt niet voor u over HTTP. Voordat hij wordt teruggegeven, moet de connector:
- Verbinden met de proxy en een geldig CONNECT-verzoek voor de bestemming sturen.
- Alle ondersteunde proxy-authenticatie voltooien en een geslaagde tunnelstatus valideren.
- Het volledige proxy-headerdeel lezen, gedeeltelijke leesbewerkingen afhandelen en bytes voorbij de grens bewaren.
- De opzet begrenzen en geweigerde/foutieve sockets via zijn opruimroute sluiten.
Gebruik een onderhouden connector voor dat werk. Zoeken naar een Engelse succeszin in één ontvangstbuffer mist gesplitste statusregels, variabele redenstekst en onvolledige headers. Een geslaagde proxy-TCP-verbinding is niet de geaccepteerde SSH-tunnel.
De proxy moet de gevraagde SSH-poort toestaan; toestemming voor webbrowsen brengt geen CONNECT-toegang tot poort 22 tot stand. Een 407 treedt op vóór de SSH-login, terwijl een SSH-accountfout optreedt na de tunnel. Houd die accounts gescheiden.
Sluit de SSH-client en de resources die de connector bezit wanneer u klaar bent. Dat een taak stopt met lezen, sluit op zichzelf geen actieve verbinding.