¿Cómo actualizo Ruby Gems detrás de un Proxy (ISA-NTLM)

El firewall que estoy detrás está ejecutando el servidor Microsoft ISA en modo NTLM. ¿Alguien tiene éxito al obtener sus gems de Ruby para instalar / actualizar a través de la gem Ruby SSPI u otro método?

… ¿o simplemente estoy siendo flojo?

Nota: rubysspi-1.2.4 no funciona.

Esto también funciona para “igem”, parte del proyecto IronRuby

No pude hacer que el mío funcionara desde el HTTP_PROXY de la línea de comandos, pero he podido hacerlo simplemente configurando la variable de entorno HTTP_PROXY . (Tenga en cuenta que el caso parece ser importante). Tengo un archivo por lotes que tiene una línea como esta:

 SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT% 

Establecí las cuatro variables referenciadas antes de llegar a esta línea obviamente. Como ejemplo, si mi nombre de usuario es “wolfbyte”, mi contraseña es “secreta” y mi proxy se llama “pigsy” y opera en el puerto 8080:

 SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080 

Es posible que desee tener cuidado con la forma de administrarlo, ya que almacena su contraseña en texto sin formato en la sesión de la máquina, pero no creo que deba ser demasiado problemático.

Para el sistema operativo Windows, utilicé Fiddler para solucionar el problema.

  1. Instalar / ejecutar Fiddler desde http://www.fiddler2.com
  2. Ejecutar gem:

     $ gem install --http-proxy http://localhost:8888 $gem_name 

Esto funcionó por completo:

 gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name 

He estado usando cntlm ( http://cntlm.sourceforge.net/ ) en el trabajo. La configuración es muy similar a ntlmaps.

  • instalación de gem –http-proxy http: // localhost: 3128 _name_of_gem_

Funciona muy bien y también me permite conectar mi caja Ubuntu al proxy ISA.

Visite http://cntlm.wiki.sourceforge.net/ para más información

Intenté algunas de estas soluciones, y ninguna de ellas funcionó. Finalmente encontré una solución que funciona para mí:

 gem install -p http://proxy_ip:proxy_port rails 

usando el parámetro -p para pasar el proxy. Estoy usando Gem versión 1.9.1.

Esto resolvió mi problema perfectamente:

 gem install -p http://proxy_ip:proxy_port compass 

Es posible que deba agregar su nombre de usuario y contraseña:

 gem install -p http://[username]:[password]@proxy_ip:proxy_port compass 

Cree un archivo .gemrc (en / etc / gemrc o ~ / .gemrc o, por ejemplo, con chef gem en / opt / chef / embedded / etc / gemrc) que contenga:

 http_proxy: http://proxy:3128 

Entonces puedes gem install como de costumbre.

Si tiene problemas para autenticarse a través de su proxy, asegúrese de configurar las variables de entorno exactamente en el siguiente formato:

 set HTTP_PROXY=some.proxy.com set HTTP_PROXY_USER=user set HTTP_PROXY_PASS=password 

El user:password@ syntax no parece funcionar y también hay algunas variables de entorno mal nombradas flotando en Stack Overflow y varias publicaciones en el foro.

También tenga en cuenta que sus gems pueden tardar un tiempo en comenzar a descargarse. Al principio pensé que no estaba funcionando, pero con un poco de paciencia comenzaron a descargar como se esperaba.

Probé todas las soluciones anteriores, sin embargo, ninguna de ellas funcionó. Si estás en linux / macOS, sugiero usar tsocks en un túnel ssh. Lo que necesita para que esta configuración funcione es una máquina en la que puede iniciar sesión a través de ssh y, además de eso, un progtwig llamado tsocks instalado.

La idea aquí es crear un túnel dynamic a través de SSH (un proxy socks5). Luego configuramos tsocks para usar este túnel y para comenzar nuestras aplicaciones, en este caso:

 tsocks gem install ... 

o para dar cuenta de los Rails 3.0:

 tsocks bundle install 

Una guía más detallada se puede encontrar en:

http://blog.byscripts.info/2011/04/bypass-a-proxy-with-ssh-tunnel-and-tsocks-under-ubuntu/

A pesar de estar escrito para Ubuntu, el procedimiento debería ser aplicable a todas las máquinas basadas en Unix. Una alternativa a tsocks para Windows es FreeCap ( http://www.freecap.ru/eng/ ). Un cliente SSH viable en Windows se llama masilla.

Abundan las publicaciones sobre este tema, y ​​para ayudar a otros a ahorrar horas probando diferentes soluciones, aquí está el resultado final de mis horas de retoques.

Las tres soluciones en Internet en este momento son: rubysspi apserver cntlm

rubysspi solo funciona desde una máquina Windows, AFAIK, ya que depende de la biblioteca Win32Api. Entonces, si está en una caja de Windows tratando de ejecutar a través de un proxy, esta es la solución para usted. Si está en una distribución de Linux, no tiene suerte.

apserver parece ser un proyecto muerto. El enlace que figura en las publicaciones que he visto lleva a la página 404 en sourceforge. Busco “apserver” en sourceforge no devuelve nada.

El enlace de sourceforge para cntlm que he visto redirecciona a http://cntlm.awk.cz/ , pero se agota el tiempo. Una búsqueda en sourceforge aparece en este enlace, que funciona: http://sourceforge.net/projects/cntlm/

Después de descargar y configurar cntlm, he logrado instalar una gem a través del proxy, por lo que esta parece ser la mejor solución para las distribuciones de Linux.

Una solución alternativa es instalar http://apserver.sourceforge.net en su equipo local, configurarlo y ejecutar gems a través de este proxy.

  • Instalar: simplemente descargue apserver 097 (¡y no el experimental 098!) Y descomprímalo.
  • Configurar: edite el archivo server.cfg y coloque los valores para su proxy MS en PARENT_PROXY y PARENT_PROXY_PORT . Ingrese los valores para DOMINIO y USUARIO. Deje PASSWORD en blanco (nada después de los dos puntos): se le preguntará al iniciarlo.
  • Ejecute apserver: cd aps097; python main.py cd aps097; python main.py
  • Ejecutar gems: gem install—http-proxy http://localhost:5865/ library

Estoy trabajando detrás de un proxy y acabo de instalar SASS descargándolo directamente desde http://rubygems.org .

Luego ejecuté sudo gem install [path/to/downloaded/gem/file] . No puedo decir que esto funcionará para todas las gems, pero puede ayudar a algunas personas.

Esto funcionó para mí en una caja de Windows:

 set HTTP_PROXY=http://server:port set HTTP_PROXY_USER=username set HTTP_PROXY_PASS=userparssword set HTTPS_PROXY=http://server:port set HTTPS_PROXY_USER=username set HTTPS_PROXY_PASS=userpassword 

Tengo un archivo por lotes con estas líneas que utilizo para establecer los valores del entorno cuando lo necesito.

El truco, en mi caso, fueron los conjuntos HTTPS_PROXY . Sin ellos, siempre obtuve un error de autenticación de proxy 407.

rubysspi-1.3.1 funcionó para mí en Windows 7, usando las instrucciones de esta página:

http://www.stuartellis.eu/articles/installing-ruby/

Si está en un sistema * nix, use esto:

 export http_proxy=http://${proxy.host}:${port} export https_proxy=http://${proxy.host}:${port} 

y luego prueba:

 gem install ${gem_name} 

Si desea usar el proxy SOCKS5, puede probar rubygems-socksproxy https://github.com/gussan/rubygems-socksproxy .

Funciona para mí en OSX 10.9.3.

Si está detrás de un proxy, puede navegar a las descargas de Ruby , hacer clic en Descargar, que descargará la actualización especificada (o Gema) a la ubicación deseada.

Luego, a través de la línea de comando de Ruby, navegue a la ubicación descargada usando: pushd [directory]

por ejemplo: pushd D:\Setups

luego ejecute el siguiente comando: gem install [update name] --local

por ejemplo: gem install rubygems-update --local .

Probado en Windows 7 con la actualización de Ruby versión 2.4.1.

Para verificar use el siguiente comando: ruby -v

En lugar de editar archivos de proceso por lotes (que puede que tenga que hacer para otras gems de Ruby, por ejemplo, Bundler), probablemente sea mejor hacerlo una vez y hacerlo correctamente.

En Windows, detrás de mi proxy corporativo, todo lo que tenía que hacer era agregar la variable de entorno HTTP_PROXY a mi sistema.

  1. Inicio -> clic derecho en Computadora -> Propiedades
  2. Elija “Configuración avanzada del sistema”
  3. Haga clic en Avanzado -> Variables de entorno
  4. Cree una nueva variable de sistema llamada ” HTTP_PROXY ” y establezca el valor en su servidor proxy
  5. Reiniciar o cerrar sesión y volver a iniciarla

Dependiendo de sus requisitos de autenticación, el valor HTTP_PROXY puede ser tan simple como:

 http://proxy-server-name 

O más complejo como otros han señalado

 http://username:password@proxy-server-name:port-number