Når en HTTP CONNECT-hjelper har returnert en tunnel til den tiltenkte SSH-serveren, gi den strømmen 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.

Erstatt eksempelverten og last inn distribusjonens korrekte known-hosts-data. tunnel må allerede føre til samme server. Vertsnavnet som sendes til connect, identifiserer SSH-vertsnøkkelen, ikke proxyen.

sock-grensesnittet godtar en åpen socket eller et socketlignende objekt. Det forhandler ikke HTTP for deg. Før det returneres, må connectoren:

  1. Koble til proxyen og sende en gyldig CONNECT-forespørsel for målet.
  2. Fullføre all støttet proxyautentisering og validere en vellykket tunnelstatus.
  3. Lese hele proxy-headeravsnittet, håndtere delvise lesinger og bevare byte utenfor grensen.
  4. Begrense oppsettet og lukke avviste/feilaktige sockets gjennom sin oppryddingssti.

Bruk en vedlikeholdt connector til det arbeidet. Å søke etter en engelsk suksessfrase i én mottaksbuffer overser delte statuslinjer, variabel årsakstekst og ufullstendige headere. En vellykket proxy-TCP-tilkobling er ikke den aksepterte SSH-tunnelen.

Proxyen må tillate den forespurte SSH-porten; nettlesertillatelse etablerer ikke CONNECT-tilgang til port 22. En 407 oppstår før SSH-innlogging, mens en SSH-kontofeil oppstår etter tunnelen. Hold disse kontoene atskilt.

Lukk SSH-klienten og ressursene connectoren eier når du er ferdig. At en oppgave stopper lesingene sine, lukker ikke i seg selv en aktiv tilkobling.

Relaterte artikler