Fabrics fjernkommandoer reiser over SSH. For å føre den SSH-forbindelsen gjennom en SOCKS-server, gi Fabric en connector som snakker SOCKS og returnerer bytestrømmen til destinasjonen.

API-et Connection som ble introdusert i Fabric 2 godtar en kommandostreng som sin gateway. Fabric bruker den strengen som ProxyCommand. Med en eksisterende OpenBSD-kompatibel nc som støtter proxyvalgene sine, kan konfigurasjonen 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 eksempelet bruker den vanlige SSH-porten, 22. Connectorens -X 5 velger SOCKS5, mens -x angir endepunktet for proxyen. Plassholderne for vert og port gir SSH-destinasjonen. For en offentlig SSH-destinasjon kan et uautentisert endepunkt fra SOCKS5-proxylisten fylle ut proxyadressen hvis det tillater den destinasjonen og porten. Konfigurer kommandoen med valgene til den faktiske connectoren som er installert på maskinen; programmer med navnet nc har ikke alle samme grensesnitt.

Connectoren kjører lokalt, der Fabric kjører. Applikasjonsserveren trenger ikke den hjelperen bare fordi den er SSH-destinasjonen. Når strømmen er etablert, utfører Fabric fortsatt SSH-forhandling og autentiserer deploy-kontoen på app.example.net. Enhver autentisering som SOCKS-serveren krever, tilhører connectoren og må støttes av den.

Fabric kan også lese en ProxyCommand fra SSH-konfigurasjon. Det kan være praktisk når samme rute brukes av flere SSH-verktøy. Bruk én tiltenkt gateway-definisjon for forbindelsen, i stedet for å kombinere en gateway i kommandostil med en separat jump-host-gateway for samme destinasjon.

Når mellomleddet er en SSH-server

Et Connection-objekt fra Fabric som angis som gateway, betyr noe annet: Fabric kobler til den SSH-gatewayen og ber om en kanal til den endelige verten. Bruk den formen for en SSH jump host. En SOCKS-lytter er ikke en SSH-server, så den trenger connectoren i kommandostil ovenfor.

Dette transportvalget har også en klar grense. Det ruter Fabrics SSH-forbindelse. En kommando som kjøres på fjernverten og senere laster ned et repositorium eller en pakke, lager en ny utgående forbindelse fra den verten, under det programmets egen proxykonfigurasjon.

Relaterte artikler