Fabrics fjärrkommandon färdas över SSH. För att föra den SSH-anslutningen genom en SOCKS-server, ge Fabric en anslutning som talar SOCKS och returnerar destinationens byteflöde.

API:et Connection som introducerades i Fabric 2 accepterar en kommandosträng som sin gateway. Fabric använder den strängen som ProxyCommand. Med en befintlig OpenBSD-kompatibel nc som stöder sina proxyalternativ kan konfigurationen vara:

from fabric import Connection

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

Det här exemplet använder den vanliga SSH-porten, 22. Anslutningens -X 5 väljer SOCKS5, medan -x anger proxyns ändpunkt. Platshållarna för värd och port ger SSH-destinationen. För en offentlig SSH-destination kan en oautentiserad ändpunkt från SOCKS5-proxylistan fylla i proxyadressen om den tillåter den destinationen och porten. Konfigurera kommandot enligt alternativen för den faktiska anslutning som är installerad på maskinen; program med namnet nc har inte alla samma gränssnitt.

Anslutningen körs lokalt, där Fabric körs. Applikationsservern behöver inte den hjälparen bara för att den är SSH-destinationen. När flödet är upprättat utför Fabric fortfarande SSH-förhandling och autentiserar deploy-kontot på app.example.net. All autentisering som SOCKS-servern kräver tillhör anslutningen och måste stödjas av den.

Fabric kan också läsa en ProxyCommand från SSH-konfiguration. Det kan vara praktiskt när samma rutt används av flera SSH-verktyg. Använd en enda avsedd gateway-definition för anslutningen, i stället för att kombinera en gateway i kommandostil med en separat jump-host-gateway för samma destination.

När mellanledet är en SSH-server

Ett Connection-objekt från Fabric som anges som gateway betyder något annat: Fabric ansluter till den SSH-gatewayen och begär en kanal till den slutliga värden. Använd den formen för en SSH jump host. En SOCKS-lyssnare är inte en SSH-server, så den behöver anslutningen i kommandostil ovan.

Det här transportvalet har också en tydlig gräns. Det dirigerar Fabrics SSH-anslutning. Ett kommando som körs på fjärrvärden och senare hämtar ett arkiv eller paket skapar en ny utgående anslutning från den värden, enligt det programmets egen proxykonfiguration.

Relaterade artiklar