Conexiuni SSH Fabric 2+ printr-un proxy SOCKS
Folosiți gateway-ul ProxyCommand din Fabric cu un conector compatibil SOCKS, păstrând autentificarea SSH legată de destinație.
Comenzile la distanță din Fabric călătoresc prin SSH. Pentru a purta acea conexiune SSH printr-un server SOCKS, dați Fabric un conector care vorbește SOCKS și returnează fluxul de octeți al destinației.
API-ul Connection introdus în Fabric 2 acceptă un șir de comandă drept gateway al său. Fabric folosește acel șir ca ProxyCommand. Cu un nc compatibil OpenBSD care își suportă opțiunile de proxy, configurația poate fi:
from fabric import Connection
connection = Connection(
"app.example.net",
user="deploy",
gateway="nc -X 5 -x proxy.example.net:1080 %h %p",
)Acest exemplu folosește portul SSH obișnuit, 22. -X 5 conectorului selectează SOCKS5, iar -x indică punctul final al proxy-ului. Substituenții pentru gazdă și port furnizează destinația SSH. Pentru o destinație SSH publică, un punct final neautentificat din lista de proxy-uri SOCKS5 poate completa adresa proxy dacă permite acea destinație și acel port. Configurați comanda cu opțiunile conectorului real instalat pe mașină; programele numite nc nu expun toate aceeași interfață.
Conectorul rulează local, acolo unde rulează Fabric. Serverul aplicației nu are nevoie de acel ajutor doar pentru că este destinația SSH. Odată stabilit fluxul, Fabric efectuează în continuare negocierea SSH și autentifică contul deploy pe app.example.net. Orice autentificare cerută de serverul SOCKS aparține conectorului și trebuie să fie suportată de acesta.
Fabric poate citi și un ProxyCommand din configurația SSH. Acest lucru poate fi convenabil când aceeași rută este folosită de mai multe instrumente SSH. Folosiți o singură definiție de gateway destinată conexiunii, în loc să combinați un gateway în stil comandă cu un gateway separat de gazdă de salt pentru aceeași destinație.
Când intermediarul este un server SSH
Un obiect Connection din Fabric furnizat ca gateway înseamnă altceva: Fabric se conectează la acel gateway SSH și solicită un canal către gazda finală. Folosiți acea formă pentru o gazdă de salt SSH. Un ascultător SOCKS nu este un server SSH, așa că are nevoie de conectorul în stil comandă de mai sus.
Această alegere de transport are și o limită clară. Ea rutează conexiunea SSH a Fabric. O comandă executată pe gazda la distanță care descarcă ulterior un depozit sau un pachet creează o nouă conexiune de ieșire din acea gazdă, conform configurației proprii de proxy a acelui program.