2008-08-07 23 views
203

El firewall que estoy detrás está ejecutando el servidor Microsoft ISA en modo NTLM. ¿Alguien tiene éxito al obtener sus gemas de Ruby para instalar/actualizar a través de la gema Ruby SSPI u otro método?Cómo actualizo Ruby Gems detrás de un Proxy (ISA-NTLM)

... ¿o simplemente estoy siendo flojo?

Nota: rubysspi-1.2.4 no funciona.

Esto también funciona para "iGEM", que forma parte del proyecto IronRuby

+6

+1 me he quedado atrapado en esto por un día. gracias por preguntar. – Gishu

+0

He conseguido que Rubysspi funcione, pero se requieren muchos ajustes. Si desea usarlo desde un shell de Git Bash, necesitará un alias agregado a su archivo .bashrc, como este: 'alias gem = 'ruby -rspa \' which gem \ ''' – iconoclast

+1

Si tiene un proxy Después de realizar los pasos en la mayoría de estas respuestas, asegúrese de que 'sudo' tenga acceso a las variables de su entorno agregando el modificador''E', por ejemplo, 'sudo -E doSomething' –

Respuesta

197

yo no era capaz de conseguir la mina de trabajo del interruptor de línea de comandos, pero he sido capaz de hacerlo, basta con situar mi 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 en la que:

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

que establezca las cuatro variables referenciados 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:[email protected]:8080 

Es posible que desee tener cuidado de cómo manejar eso porque almacena su contraseña en texto sin formato en la sesión de la máquina, pero no creo que deba ser un gran problema.

+5

Parece que 'gem' no reconoce las barras invertidas en la cadena proxy, ya sea por http_proxy env var o por el argumento --http-proxy. p.ej. desde mi cuadro Ubuntu --http-proxy http: // dominio \\ usuarioid @ servidor: el puerto me da el error: "argumento inválido: --http-proxy ..."; Afortunadamente, mi servidor proxy no requería la especificación del dominio y la gema funcionaba sin él. – spoulson

+0

ISA permite al administrador especificar un dominio predeterminado para autenticarse. Puede tratar de omitir el dominio y simplemente usar su nombre de usuario como sugiere Spoulson. Si su administrador de ISA ha especificado dicho dominio predeterminado y su cuenta de uso está en ese dominio, esto debería funcionar para usted (suponiendo que no haya reglas de bloqueo en el firewall) – squillman

+0

¡Gracias, funcionó! Me pregunto por qué no funcionó cuando probé los argumentos de línea de comando -p y -http-proxy. Parece que el env var es lo que funciona. – Gishu

5

Una solución es instalar http://apserver.sourceforge.net en el equipo local, configurar y ejecutar las gemas a través de este proxy.

  • Instalar: Simplemente descargue apserver 097 (¡y no el experimental 098!) Y descomprima.
  • 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.
  • Run APServer: cd aps097; python main.py
  • Run gemas: gem install—http-proxy http://localhost:5865/ library
+5

Lea en un grupo de google que 'apserver' ahora es 'NTLM Authorization Server'; Es una pena que buscar lo primero no redirija a lo último. –

+0

Hola Jarin, Fui al enlace que proporcionó en su comentario y no pude encontrar esa descarga. ¿Hay alguna forma de que pueda descargarlo desde cualquier otro lado? – Matrich

+1

@Matrich según el comentario de Darren. apserver ahora se renombra y se encuentra aquí: http://ntlmaps.sourceforge.net/ – atomicules

46

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

funciona muy bien, y también me permite conectar mi caja de Ubuntu para el proxy ISA.

Comprobar

+2

Esta es la manera menos dolorosa de todas las que se han intentado. En Ubuntu/Debian, hago apt-get install cntlm, edito config y luego exporto http_proxy = "http: // localhost: 3128". ¡Trabajos! – Konrads

+0

Funciona perfectamente en Windows también. ¡Gracias! –

7

Mensajes cabo http://cntlm.wiki.sourceforge.net/ para más información respecto a este tema abundan, y para ayudar a otros a ahorrar horas de intentar diferentes soluciones, aquí está el resultado final de mis horas de retoques.

Las tres soluciones en todo el Internet en este momento son: rubysspi APServer cntlm

rubysspi sólo funciona desde una máquina Windows, que yo sepa, ya que se basa en 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 vínculo de sourceforge para cntlm que he visto redirecciona a http://cntlm.awk.cz/, pero se agota el tiempo de espera. 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 gema a través del proxy, por lo que esta parece ser la mejor solución para las distribuciones de Linux.

186

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

  1. Instalar/Ejecutar violinista de www.fiddler2.com
  2. Run joya:

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

Funcionó como un regalo, mucho más fácil que ntlmaps y cntlm. – atomicules

+30

Esto funcionó para mí. Tenga en cuenta que Fiddler no es necesario en todas las situaciones. Solo 'gem install --http-proxy http: //COMPANY.PROXY.ADDRESS $ gem_name' es todo lo que necesitaba. – Polaris878

+2

Magia: funciona como una bomba, y la mayoría de nosotros ya lo tenemos ... – Jim

10

Si usted está teniendo problemas para conseguir autentican a través de su proxy, asegúrese de ajustar 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 

no parece user:[email protected] la sintaxis para trabajar y también hay algunas variables de entorno mal llamada flotando en desbordamiento de pila y varios Foru m publicaciones.

También tenga en cuenta que sus gemas 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.

+0

Tomando la sugerencia de Benjamin Wootton funcionó muy bien en mi computadora portátil con Windows 7 conectada a la LAN corporativa. En la ventana de línea de comando en el indicador de DOS configuro HTTP_PROXY como http: // localhost: 8888 (ignore los espacios) y luego utilicé mi nombre de usuario LAN y la contraseña para HTTP_PROXY_USER y HTTP_PROXY_PASS respectivamente. – raycarr

+0

Ninguna de las otras soluciones funcionó para mí. Esto funcionó como un regalo. Gracias Benjamin! – thegreendroid

112

Esta totalmente trabajado:

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

Esta es la respuesta más actualizada, también funciona con Windows. Tuve que agregar mi nombre de usuario y contraseña a través de: gem install --http-proxy http: // [_user_]: [_password_] @ [_server_]: [_port_] – Geronimo

+0

Funcionó muy bien para mí. Amo la solución corta y simple. – Urchin

+0

No pude instalar jekyll y seguí recibiendo 'SSL_connect SYSCALL returned = 5 errno = 0 state = unknown state (https://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/jekyll-3.0.0.gemspec .rz) '. Esto funcionó para mí con 'gem install --http-proxy http://127.0.0.1:8580 jekyll' –

35

He intentado algunas de estas soluciones, y ninguno de ellos trabajaron.Finalmente encontré una solución que funciona para mí:

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

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

+1

Obtuve la instalación reemplazando la parte de proxy en http: // nombre de usuario: contraseña @ proxy_ip: proxyport –

+0

Tuve que agregar el 'proxy_ip' que se usa para las conexiones' https' para que funcione. Excelente: D (gema versión 2.0.14) – madlymad

4

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 gemas, pero puede ayudar a algunas personas.

+0

Gracias, nada más funcionó, pero esto para ruby ​​2.x para mí – catrapture

2

Si se encuentra en un sistema * nix, utilice esto:

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

y luego tratar:

gem install ${gem_name} 
14

Esto resolvió mi problema perfectamente:

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

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

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

Acabo de probarlo y este trabajo en Windows 8 – disklosr

+0

Esta es la respuesta. La respuesta con bandera verde no funciona en absoluto. – nottinhill

+0

Esto funcionó para mí con auth en Mac OSX 10.9.4. –

1

En lugar de editar archivos por lotes (que puede que tenga que hacer para otras gemas de Ruby, p. Bundler), probablemente sea mejor hacer esto 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 -> derecha, en PC -> Propiedades
  2. Elija "Configuración avanzada del sistema"
  3. Opciones avanzadas -> Variables de entorno
  4. Crear una nueva variable de sistema llamado "HTTP_PROXY", y establecer el valor a su servidor proxy
  5. Reiniciar o cerrar la sesión y volver de nuevo

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

http://proxy-server-name 

O más complejo como otros han señalado

http://username:[email protected]:port-number 
1

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

A continuación, a través de línea de comandos Ruby, vaya a la ubicación descargado mediante el uso de: pushd [directory]

por ejemplo: pushd D:\Setups

continuación, ejecute el siguiente comando: gem install [update name] --local

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

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

Para comprobar el uso siguiente comando: ruby -v

3

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 de entorno cuando lo necesito .

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

11

Crear un archivo .gemrc (ya sea en/etc/gemrc o ~/.gemrc o, por ejemplo con la gema chef en/opt/chef/embedded/etc/gemrc) que contiene:

http_proxy: http://proxy:3128 

A continuación, puede gem install como de costumbre.

+1

Parece que funciona, gracias :) –

Cuestiones relacionadas