Connexions SSH de Fabric 2+ a través d'un proxy SOCKS
Utilitzeu la passarel·la ProxyCommand de Fabric amb un connector compatible amb SOCKS mantenint l'autenticació SSH lligada a la destinació.
Les ordres remotes de Fabric viatgen per SSH. Per fer passar aquesta connexió SSH per un servidor SOCKS, doneu a Fabric un connector que parli SOCKS i retorni el flux de bytes de la destinació.
L'API Connection introduïda a Fabric 2 accepta una cadena d'ordres com a gateway. Fabric utilitza aquesta cadena com a ProxyCommand. Amb un nc compatible amb OpenBSD que admeti les seves opcions de proxy, la configuració pot ser:
from fabric import Connection
connection = Connection(
"app.example.net",
user="deploy",
gateway="nc -X 5 -x proxy.example.net:1080 %h %p",
)Aquest exemple fa servir el port SSH habitual, 22. El -X 5 del connector selecciona SOCKS5, mentre que -x identifica el punt final del proxy. Els marcadors d'amfitrió i port forneixen la destinació SSH. Per a una destinació SSH pública, un punt final no autenticat de la llista de proxys SOCKS5 pot omplir l'adreça del proxy si permet aquesta destinació i aquest port. Configureu l'ordre amb les opcions del connector real instal·lat a la màquina; els programes anomenats nc no tots exposen la mateixa interfície.
El connector s'executa localment, on s'executa Fabric. El servidor d'aplicacions no necessita aquest ajudant només perquè és la destinació SSH. Un cop establert el flux, Fabric encara fa la negociació SSH i autentica el compte deploy a app.example.net. Qualsevol autenticació que requereixi el servidor SOCKS pertany al connector i l'ha de suportar.
Fabric també pot llegir un ProxyCommand de la configuració SSH. Això pot ser convenient quan diversos eines SSH utilitzen la mateixa ruta. Utilitzeu una única definició de passarel·la prevista per a la connexió, en lloc de combinar una passarel·la en forma d'ordre amb una passarel·la separada d'amfitrió de salt per a la mateixa destinació.
Quan l'intermediari és un servidor SSH
Un objecte Connection de Fabric subministrat com a gateway significa una cosa diferent: Fabric es connecta a aquesta passarel·la SSH i sol·licita un canal cap a l'amfitrió final. Utilitzeu aquesta forma per a un amfitrió de salt SSH. Un oient SOCKS no és un servidor SSH, així que necessita el connector en forma d'ordre anterior.
Aquesta elecció de transport també té un límit clar. Encamina la connexió SSH de Fabric. Una ordre executada a l'amfitrió remot que després baixi un repositori o un paquet fa una nova connexió sortint des d'aquell amfitrió, segons la configuració de proxy pròpia d'aquell programa.