Videregiv en etableret HTTP CONNECT-tunnel til Paramiko
Forbind Paramiko gennem en autoriseret HTTP CONNECT-rute, mens SSH-værtsnøgleverifikation bevares.
Når en HTTP CONNECT-hjælper har returneret en tunnel til den tilsigtede SSH-server, skal du give den stream til 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.Erstat eksempelværten, og indlæs udrulningens korrekte known-hosts-data. tunnel skal allerede føre til den samme server. Det værtsnavn, der gives til connect, identificerer SSH-værtsnøglen, ikke proxyen.
sock-grænsefladen accepterer en åben socket eller et socketlignende objekt. Den forhandler ikke HTTP for dig. Før den returneres, skal connectoren:
- Forbinde til proxyen og sende en gyldig CONNECT-anmodning til destinationen.
- Fuldføre enhver understøttet proxygodkendelse og validere en vellykket tunnelstatus.
- Læse hele proxy-headerafsnittet, håndtere delvise læsninger og bevare bytes ud over grænsen.
- Begrænse opsætningen og lukke afviste/fejlbehæftede sockets gennem sin oprydningssti.
Brug en vedligeholdt connector til det arbejde. At søge efter en engelsk succesfrase i én modtagelsesbuffer overser opdelte statuslinjer, variabel årsagstekst og ufuldstændige headere. En vellykket proxy-TCP-forbindelse er ikke den accepterede SSH-tunnel.
Proxyen skal tillade den ønskede SSH-port; webbladsstilladelse etablerer ikke CONNECT-adgang til port 22. En 407 opstår før SSH-login, mens en SSH-kontofejl opstår efter tunnelen. Hold disse konti adskilt.
Luk SSH-klienten og de ressourcer, connectoren ejer, når du er færdig. At en opgave stopper sine læsninger, lukker ikke i sig selv en aktiv forbindelse.