Os comandos remotos de Fabric viaxan por SSH. Para levar esa conexión SSH por un servidor SOCKS, dálle a Fabric un conector que fale SOCKS e devolva o fluxo de bytes do destino.

A API Connection introducida en Fabric 2 acepta unha cadea de comando como o seu gateway. Fabric usa esa cadea como ProxyCommand. Cun nc compatible con OpenBSD que admita as súas opcións de proxy, a configuración pode ser:

from fabric import Connection

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

Este exemplo usa o porto SSH habitual, 22. O -X 5 do conector selecciona SOCKS5, mentres que -x identifica o punto final do proxy. Os marcadores de host e porto fornecen o destino SSH. Para un destino SSH público, un punto final non autenticado da lista de proxies SOCKS5 pode encher o enderezo do proxy se permite ese destino e ese porto. Configure o comando coas opcións do conector real instalado na máquina; os programas chamados nc non todos expoñen a mesma interface.

O conector execútase localmente, onde se executa Fabric. O servidor de aplicacións non precisa ese axudante só porque sexa o destino SSH. Unha vez establecido o fluxo, Fabric segue realizando a negociación SSH e autentica a conta deploy en app.example.net. Calquera autenticación que requira o servidor SOCKS pertence ao conector e debe estar soportada por el.

Fabric tamén pode ler un ProxyCommand da configuración de SSH. Iso pode resultar cómodo cando varias ferramentas SSH usan a mesma ruta. Use unha única definición de pasarela prevista para a conexión, en lugar de combinar unha pasarela en forma de comando cunha pasarela de host de salto separada para o mesmo destino.

Cando o intermediario é un servidor SSH

Un obxecto Connection de Fabric fornecido como gateway significa algo distinto: Fabric conéctase a esa pasarela SSH e solicita unha canle cara ao host final. Use esa forma para un host de salto SSH. Un escoita SOCKS non é un servidor SSH, así que necesita o conector en forma de comando anterior.

Esta elección de transporte tamén ten un límite claro. Encamiña a conexión SSH de Fabric. Un comando executado no host remoto que despois descargue un repositorio ou un paquete crea unha nova conexión saínte desde ese host, segundo a configuración de proxy propia dese programa.

Artigos relacionados