Vidarebefordra en etablerad HTTP CONNECT-tunnel till Paramiko
Anslut Paramiko via en auktoriserad HTTP CONNECT-rutt medan SSH-värdnyckelverifiering behålls.
När en HTTP CONNECT-hjälpare har returnerat en tunnel till den avsedda SSH-servern, ge den strömmen till 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 exempelvärden och läs in distributionens korrekta known-hosts-data. tunnel måste redan leda till samma server. Värdnamnet som skickas till connect identifierar SSH-värdnyckeln, inte proxyn.
sock-gränssnittet accepterar en öppen socket eller ett socketliknande objekt. Det förhandlar inte HTTP åt dig. Innan det returneras måste anslutaren:
- Ansluta till proxyn och skicka en giltig CONNECT-begäran för målet.
- Slutföra allt stött proxyautentisering och validera en lyckad tunnelstatus.
- Läsa hela proxyhuvudavsnittet, hantera partiella läsningar och bevara byte bortom gränsen.
- Begränsa uppsättningen och stänga avvisade/felaktiga sockets via sin städväg.
Använd en underhållen anslutare för det arbetet. Att söka efter en engelsk framgångsfras i en enda mottagningsbuffert missar delade statusrader, variabel orsakstext och ofullständiga huvuden. En lyckad proxy-TCP-anslutning är inte den accepterade SSH-tunneln.
Proxyn måste tillåta den begärda SSH-porten; webbläsartillstånd etablerar inte CONNECT-åtkomst till port 22. En 407 inträffar före SSH-inloggning, medan ett SSH-kontofel inträffar efter tunneln. Håll dessa konton åtskilda.
Stäng SSH-klienten och de resurser anslutaren äger när du är klar. Att en uppgift slutar läsa stänger inte i sig en aktiv anslutning.