Předání zavedeného tunelu HTTP CONNECT do Paramiko
Připojte Paramiko přes autorizovanou trasu HTTP CONNECT a zachovejte ověřování klíče hostitele SSH.
Jakmile pomocník HTTP CONNECT vrátí tunel k zamýšlenému serveru SSH, předejte tento proud 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ázkového hostitele a načtěte správná data known-hosts daného nasazení. tunnel už musí vést ke stejnému serveru. Název hostitele předaný do connect určuje klíč hostitele SSH, nikoli proxy.
Rozhraní sock přijímá otevřený socket nebo objekt podobný socketu. Nevyjednává za vás HTTP. Před vrácením musí konektor:
- Připojit se k proxy a odeslat platný požadavek CONNECT na cíl.
- Dokončit podporované ověření proxy a ověřit úspěšný stav tunelu.
- Přečíst celou sekci hlaviček proxy, zvládnout částečná čtení a zachovat bajty za hranicí.
- Omezit nastavení a zavřít odmítnuté/chybové sockety svou úklidovou cestou.
Pro tuto práci používejte udržovaný konektor. Hledání anglické fráze úspěchu v jedné přijímací vyrovnávací paměti mine rozdělené stavové řádky, proměnný text důvodu a neúplné hlavičky. Úspěšné TCP připojení k proxy není přijatý tunel SSH.
Proxy musí povolit požadovaný port SSH; oprávnění k prohlížení webu nezřizuje přístup CONNECT na port 22. 407 nastává před přihlášením SSH, zatímco selhání účtu SSH nastává po tunelu. Udržujte tyto účty oddělené.
Po dokončení zavřete klienta SSH a prostředky vlastněné konektorem. Zastavení čtení v úloze samo o sobě nezavře živé spojení.