Keď pomocník HTTP CONNECT vráti tunel k zamýšľanému serveru SSH, odovzdajte ten prúd Paramiku:

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.

Nahraďte ukážkového hostiteľa a načítajte správne údaje known-hosts nasadenia. tunnel už musí viesť k tomu istému serveru. Názov hostiteľa odovzdaný do connect určuje kľúč hostiteľa SSH, nie proxy.

Rozhranie sock prijíma otvorený socket alebo objekt podobný socketu. Nevyjednáva za vás HTTP. Pred vrátením musí konektor:

  1. Pripojiť sa k proxy a odoslať platnú požiadavku CONNECT na cieľ.
  2. Dokončiť akékoľvek podporované overenie proxy a overiť úspešný stav tunela.
  3. Prečítať celú sekciu hlavičiek proxy, zvládnuť čiastočné čítania a zachovať bajty za hranicou.
  4. Obmedziť nastavenie a zatvoriť odmietnuté/chybové sockety cez svoju čistiacu cestu.

Na túto prácu používajte udržiavaný konektor. Hľadanie anglickej frázy úspechu v jednej prijímacej vyrovnávacej pamäti vynechá rozdelené stavové riadky, premenlivý text dôvodu a neúplné hlavičky. Úspešné TCP pripojenie k proxy nie je prijatý tunel SSH.

Proxy musí povoliť požadovaný port SSH; oprávnenie na prehliadanie webu nezakladá prístup CONNECT na port 22. 407 nastáva pred prihlásením SSH, zatiaľ čo zlyhanie účtu SSH nastáva po tuneli. Tieto účty držte oddelene.

Po dokončení zatvorte klienta SSH a prostriedky, ktoré konektor vlastní. Zastavenie čítania úlohou samo o sebe nezatvorí živé spojenie.

Súvisiace články