Pasi një ndihmës HTTP CONNECT të ketë kthyer një tunel te serveri SSH i synuar, jepni atë rrjedhë 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.

Zëvendësoni hostin shembull dhe ngarkoni të dhënat e sakta known-hosts të vendosjes. tunnel duhet të çojë tashmë te i njëjti server. Emri i hostit që i jepet connect identifikon çelësin e hostit SSH, jo proxy-n.

Ndërfaqja sock pranon një socket të hapur ose një objekt të ngjashëm me socket. Ajo nuk negocion HTTP për ju. Përpara se ta kthejë, lidhësi duhet të:

  1. Lidhet me proxy-n dhe të dërgojë një kërkesë CONNECT të vlefshme për destinacionin.
  2. Përfundojë çdo vërtetim proxy të mbështetur dhe të vërtetojë një status tuneli të suksesshëm.
  3. Lexojë të gjithë seksionin e kokave të proxy-t, duke trajtuar lexime të pjesshme dhe duke ruajtur bajtët përtej kufirit.
  4. Kufizojë konfigurimin dhe të mbyllë socket-et e refuzuara/me gabim përmes rrugës së pastrimit.

Përdorni një lidhës të mirëmbajtur për atë punë. Kërkimi i një fraze suksesi në anglisht në një tampon të vetëm pritjeje humb rreshtat e statusit të ndarë, tekstin e ndryshueshëm të arsyes dhe kokët e paplota. Një lidhje TCP proxy e suksesshme nuk është tuneli SSH i pranuar.

Proxy duhet të lejojë portën SSH të kërkuar; leja për shfletim web nuk vendos akses CONNECT te porta 22. Një 407 ndodh përpara hyrjes SSH, ndërsa një dështim i llogarisë SSH ndodh pas tunelit. Mbani ato llogari të ndara.

Mbyllni klientin SSH dhe burimet që zotëron lidhësi kur të mbaroni. Ndalimi i leximeve nga një detyrë nuk mbyll vetë një lidhje aktive.

Artikuj të ngjashëm