Fabrics fjernkommandoer rejser over SSH. For at føre den SSH-forbindelse gennem en SOCKS-server skal du give Fabric en connector, der taler SOCKS og returnerer destinationens bytestrøm.

API'et Connection, der blev introduceret i Fabric 2, accepterer en kommandostreng som sin gateway. Fabric bruger den streng som en ProxyCommand. Med en eksisterende OpenBSD-kompatibel nc, der understøtter sine proxy-indstillinger, kan konfigurationen være:

from fabric import Connection

connection = Connection(
    "app.example.net",
    user="deploy",
    gateway="nc -X 5 -x proxy.example.net:1080 %h %p",
)

Dette eksempel bruger den normale SSH-port, 22. Connectorens -X 5 vælger SOCKS5, mens -x angiver proxyens endepunkt. Pladsholderne for vært og port angiver SSH-destinationen. For en offentlig SSH-destination kan et uautentificeret endepunkt fra SOCKS5-proxylisten udfylde proxyadressen, hvis det tillader den destination og port. Konfigurer kommandoen med indstillingerne for den faktiske connector, der er installeret på maskinen; programmer med navnet nc har ikke alle samme grænseflade.

Connectoren kører lokalt, hvor Fabric kører. Applikationsserveren har ikke brug for den hjælper, blot fordi den er SSH-destinationen. Når strømmen er etableret, udfører Fabric stadig SSH-forhandling og godkender deploy-kontoen på app.example.net. Enhver godkendelse, som SOCKS-serveren kræver, hører til connectoren og skal understøttes af den.

Fabric kan også læse en ProxyCommand fra SSH-konfiguration. Det kan være praktisk, når den samme rute bruges af flere SSH-værktøjer. Brug én tilsigtet gateway-definition til forbindelsen i stedet for at kombinere en gateway i kommandostil med en separat jump-host-gateway til den samme destination.

Når mellemleddet er en SSH-server

Et Connection-objekt fra Fabric, der angives som gateway, betyder noget andet: Fabric opretter forbindelse til den SSH-gateway og anmoder om en kanal til den endelige vært. Brug den form til en SSH jump host. En SOCKS-lytter er ikke en SSH-server, så den har brug for connectoren i kommandostil ovenfor.

Dette transportvalg har også en klar grænse. Det ruter Fabrics SSH-forbindelse. En kommando, der udføres på fjernværten, og som senere henter et repository eller en pakke, opretter en ny udgående forbindelse fra den vært, under det programs egen proxykonfiguration.

Relaterede artikler