Conexiones SSH de Fabric 2+ a través de un proxy SOCKS
Use la puerta de enlace ProxyCommand de Fabric con un conector compatible con SOCKS, manteniendo la autenticación SSH ligada al destino.
Los comandos remotos de Fabric viajan por SSH. Para llevar esa conexión SSH a través de un servidor SOCKS, proporcione a Fabric un conector que hable SOCKS y devuelva el flujo de bytes del destino.
La API Connection introducida en Fabric 2 acepta una cadena de comando como su gateway. Fabric usa esa cadena como ProxyCommand. Con un nc compatible con OpenBSD que admita sus opciones de proxy, la configuración puede ser:
from fabric import Connection
connection = Connection(
"app.example.net",
user="deploy",
gateway="nc -X 5 -x proxy.example.net:1080 %h %p",
)Este ejemplo usa el puerto SSH habitual, 22. El -X 5 del conector selecciona SOCKS5, mientras que -x identifica el punto final del proxy. Los marcadores de host y puerto aportan el destino SSH. Para un destino SSH público, un punto final no autenticado de la lista de proxies SOCKS5 puede rellenar la dirección del proxy si permite ese destino y ese puerto. Configure el comando con las opciones del conector real instalado en la máquina; los programas llamados nc no todos exponen la misma interfaz.
El conector se ejecuta localmente, donde se ejecuta Fabric. El servidor de aplicaciones no necesita ese ayudante solo porque sea el destino SSH. Una vez establecido el flujo, Fabric sigue realizando la negociación SSH y autentica la cuenta deploy en app.example.net. Cualquier autenticación que requiera el servidor SOCKS pertenece al conector y debe estar soportada por él.
Fabric también puede leer un ProxyCommand de la configuración de SSH. Eso puede resultar cómodo cuando varias herramientas SSH usan la misma ruta. Use una única definición de puerta de enlace prevista para la conexión, en lugar de combinar una puerta de enlace en forma de comando con una puerta de enlace de host de salto separada para el mismo destino.
Cuando el intermediario es un servidor SSH
Un objeto Connection de Fabric proporcionado como gateway significa algo distinto: Fabric se conecta a esa puerta de enlace SSH y solicita un canal hacia el host final. Use esa forma para un host de salto SSH. Un escucha SOCKS no es un servidor SSH, así que necesita el conector en forma de comando anterior.
Esta elección de transporte también tiene un límite claro. Enruta la conexión SSH de Fabric. Un comando ejecutado en el host remoto que después descargue un repositorio o un paquete crea una nueva conexión saliente desde ese host, según la configuración de proxy propia de ese programa.