Når ein HTTP CONNECT-hjelpar har returnert ein tunnel til den tiltenkte SSH-tenaren, gje den straumen 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.

Byt ut døme-verten og last inn dei rette known-hosts-dataa for utrullinga. tunnel må allereie føre til same tenar. Vertnamnet som blir sendt til connect, identifiserer SSH-vertsnøkkelen, ikkje proxyen.

sock-grensesnittet tek imot ein open socket eller eit socketliknande objekt. Det forhandlar ikkje HTTP for deg. Før det blir returnert, må koplinga:

  1. Kople til proxyen og sende ei gyldig CONNECT-førespurnad for målet.
  2. Fullføre all støtta proxyautentisering og validere ein vellukka tunnelstatus.
  3. Lese heile proxy-headeravsnittet, handtere delvise lesingar og ta vare på byte utanfor grensa.
  4. Avgrens oppsettet og lukke avviste/feilaktige socketar gjennom sin eigen oppryddingsveg.

Bruk ein vedlikehalden kopling til det arbeidet. Å leite etter ein engelsk suksessfrase i éin mottaksbuffer overser delte statuslinjer, variabel årsakstekst og ufullstendige headarar. Ei vellukka proxy-TCP-tilkopling er ikkje den aksepterte SSH-tunnelen.

Proxyen må tillate den førespurde SSH-porten; nettlesartillating etablerer ikkje CONNECT-tilgang til port 22. Ein 407 oppstår før SSH-innlogging, medan ein SSH-kontofeil oppstår etter tunnelen. Hald desse kontoane åtskilde.

Lukk SSH-klienten og ressursane koplinga eig når du er ferdig. At ei oppgåve stoppar lesingane sine, lukkar ikkje i seg sjølv ei aktiv tilkopling.

Relaterte artiklar