¿Cómo instalar NPM detrás del proxy de autenticación en Windows?

30

Necesito ejecutar la última versión de Node y NPM en Windows. Instalé Node 0.5.8 y descargué las fuentes de NPM de GitHub. Los pasos que seguí para instalar NPM se enumeraron en su sitio de GitHub pero tengo un problema al ejecutar el siguiente comando:

node cli.js install npm -gf

pero falla con el siguiente mensaje de error:

Error: connect UNKNOWN
at errnoException (net_uv.js:566:11)
at Object.afterConnect [as oncomplete] (net_uv.js:557:18)

System Windows_NT 5.1.2600
command "...\\Node\\bin\\node.exe" "...\\npm\\cli.js" "install" "npm" "-gf"
cwd ...\npm
node -v v0.5.8
npm -v 1.0.94
code UNKNOWN

Creo que esto es un problema porque necesito autenticación en mi proxy para conectarme a Internet. Pero no encontré ninguna manera de decirle al instalador que use mis credenciales para iniciar sesión. ¿Existe la posibilidad de proporcionar mi IP proxy y la información de inicio de sesión para la instalación de npm tal vez a través de argumentos de línea de comandos?

Puedo proporcionar el registro completo (pero parece que no tengo más información relevante) usando pastebin si es necesario.

Tobias
fuente
66
Un pequeño truco, si el nombre de usuario contiene la notación dominio \ usuario, sustituya la barra diagonal inversa con el código de escape http (% 5C)
@layos Muchas gracias. Si esto fuera reddit, te daría oro.
Korinna

Respuestas:

39

set http_proxyfuncionó muy bien para mí, pero tuve que ingresarlo cada vez que abría el símbolo del sistema. Así que tuve que combinar varias respuestas y ahora la mía es permanente.

Mi secuencia fue la siguiente:

  • Ir C:\Users\YourUserName
  • Crea un archivo llamado .npmrc
  • Dentro de ese archivo, escriba lo siguiente (si está en un dominio AD):

proxy = http://domain\\username:password@ip:port

  • O use esto si NO está en un dominio AD:

proxy = http://username:password@ip:port

  • Guarda el archivo
  • Abra un símbolo del sistema e intente usar npm

Otros han tenido un éxito extra con el siguiente comando adicional:

strict-ssl = false

* Debería poder usar una dirección IP o la URL del proxy en lugar de "IP" arriba.

Es posible que deba ajustar un poco su cadena de proxy, pero esto hizo que no tuviera que agregar esto cada vez.

Aclamaciones

Eric Steinborn
fuente
3
Atención, si su contraseña contiene "@" npm no analizará su configuración de proxy correctamente. Una posible solución alternativa es poner un nombre de usuario falso: contraseña en la configuración de npm, y usar un proxy local (como fiddler) para modificar el encabezado de Autorización de Proxy de la solicitud para tener el nombre de usuario correcto: contraseña. Tenga en cuenta el nombre de usuario: la contraseña almacenada en Proxy-Authorization está codificada en base64.
BStruthers
99
Tengo el mío para trabajar:proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/ strict-ssl = false
Luke
1
no conseguí que el mío funcionara con nombre de usuario: contraseña
philx_x
1
Oye, intenté usar domain\\user:password@urltoproxy:portsin embargo, cuando ejecuto npm installlos cambios de opción a domain/user:password@urltoproxy:portEntonces, ¿cómo puedo solucionar esto?
Jacob Schneider el
Tengo el mismo problema que @JacobSchneider, en mi .npmrc: -ssl=false registry=http://registry.npmjs.org/ proxy=http://domain\\username:password#@proxy.url:8080 luego, cuando configuro desde config con npm config get proxy: http://domain/username:password#@proxy.url:8080 tenga en cuenta que la barra invertida escapada '\\' cambia a una barra diagonal '/'
pompalini
10

Quizás establecer una variable de entorno funcione para usted:

set HTTP_PROXY=http://user:[email protected]:port

(En mi caso, esto resuelve el "conectar DESCONOCIDO", pero obtengo un error completamente diferente de "colgar el socket". También intenté configurar la variable de entorno HTTPS_PROXY, pero obtuve el mismo resultado).

nafisto
fuente
Traté de configurar la variable de entorno y también intenté pasar --proxy user: [email protected]: port al comando pero ahora siempre me ECONNREFUSED. ¿Necesito especificar mi dominio AD para el inicio de sesión proxy?
Tobias
@Tobias intentaset HTTP_PROXY=http://domain\user:[email protected]:port
Adam Grant
8

Tuve este problema idéntico y esto es lo que hice para que esto funcione:

  • Ir: C:\Users\YourUserName
  • Crea un archivo llamado .npmrc
  • Y su entrada leerá:

    registry = http://registry.npmjs.org
    
  • Intenta el comando node cli.js install npm -gfnuevamente.

sam
fuente
Creé el archivo con el contenido que mencionó pero todavía obtengo el error de conexión DESCONOCIDO :(
Tobias
Saludos por esto. Realizó un "conjunto de configuración NPM registro registry.npmjs.org " para moverse por la https: // y todo está bien en mi instalación de Windows.
Gavin Gilmour
1
si alguien recibe el mensaje ETIMEOUT agregue la configuración de proxy connode config set proxy http://username:password@server:port
Jeremy S.
Lo que funcionó para mí fue crear el ~/.npmrcarchivo como el anterior, que le dice a npm que use el http://registro en lugar de https://, y luego establezca mi http_proxyvariable de entorno enhttp://myusername:[email protected]:1234
Maxy-B
Atención, si su contraseña contiene "@" npm no analizará su configuración de proxy correctamente. Una posible solución alternativa es poner un nombre de usuario falso: contraseña en la configuración de npm, y usar un proxy local (como fiddler) para modificar el encabezado de Autorización de Proxy de la solicitud para tener el nombre de usuario correcto: contraseña. Tenga en cuenta el nombre de usuario: la contraseña almacenada en Proxy-Authorization está codificada en base64.
BStruthers
4

Después de un poco de investigación, podría usarlo de esta manera:

  1. Instale el servidor proxy de autorización NTLM u otro servidor proxy para NTLM, como Cntlm. Personalmente, prefiero el servidor Python, porque puedo jugar con él, y el rendimiento no es un problema.

  2. Configurar la configuración; Tenga en cuenta que en mi caso, tenía que habilitar el modo LM y NT, y sospecharía que es el caso normal, hoy en día.

  3. Establezca la variable de entorno http_proxy y https_proxy para que apunte a su proxy local:

    set http_proxy = "localhost: 5865"
    set https_proxy = "localhost: 5865"

  4. npm debería funcionar ahora, por supuesto, debería ejecutarse desde un shell donde se definen las variables de entorno anteriores.

robar
fuente
3

Lo siguiente funcionó para mí.

En Windows 7:

npm config set proxy xxhttp://username:password@proxyhost:port# 

Esto debería crear un archivo nombrado .npmrcen la C:/users/<username>carpeta.

Chummar
fuente
3

Escriba esto en la línea de comando:

npm set proxy http://user:pass@ip:port

npm set https-proxy http://user:pass@ip:port

NO OLVIDE INCLUIR HTTP: // antes de su nombre de usuario. Funcionó para mi.

Super Luvdub
fuente
2

Este problema se resolvió por mí después de crear el archivo .npmrc como se indicó anteriormente y luego ejecutar el comando adduser y seguir las indicaciones de cmd.

npm adduser

Ejecute el siguiente comando para ver si tiene un nombre de usuario autorizado:

npm whoami
John
fuente
2

Cada una de las respuestas anteriores necesita que el usuario escriba su contraseña en un archivo de texto o en una variable de entorno.

Personalmente no me gustó una solución como estas, por su enfoque inseguro. Así que intenté escribir una aplicación que inyecte el token Kerberos del usuario actual en los intercambios entre el cliente (npm, bower, git) y el proxy. Dicho esto, Active Directory es solo una implementación patentada de Kerberos.

Uso este software todos los días, en un host de Windows 8.1. Puede encontrar el código (golang) y los primeros binarios de lanzamiento en https://github.com/nilleb/authentication-proxy .

nilleb
fuente
1

Las tres cosas me funcionaron en .npmrc

proxy = http://unam:pwd@host:port
https-proxy = http://unam:pwd@host:port
registry = http://registry.npmjs.org
captura
fuente
1

Al menos en Windows, me funciona con la siguiente configuración:

proxy = http: // dominio % 5C nombre de usuario : contraseña @ proxy_ip : puerto

es decir, (1) use en %5Clugar de \(como se sugiere en otra parte) y (2) use la dirección IP en lugar del nombre de la máquina local para el servidor proxy.

Ganesh
fuente
Esto es correcto: el dominio + nombre de usuario y la contraseña deben codificarse en URL por separado. Por ejemplo, si tiene # en su contraseña, reemplácela con% 23
saille
1

Obtendrá el host proxy y el puerto del administrador o soporte de su servidor.

Después de eso configurar

npm config set http_proxy http://username:[email protected]:itsport
npm config set proxy http://username:[email protected]:itsport

Si hay algún carácter especial en la contraseña, intente con% urlencode. Por ejemplo: - la libra (hash) debe reemplazarse por% 23.

Shamseer
fuente
2
¿A qué versiones se aplica su respuesta dado que la pregunta se hizo hace más de 3 años?
Jason Aller
Creo que no importa. Encontré la solución a este problema después de intentar mucho y nunca supe que mi contraseña estaba causando problemas. Con el fin de hacerlo perfecto, sin importar la pregunta que se me hizo, incluso antes de diez años
:)
0

La solución que funcionó para mí es la siguiente:

npm config set http_proxy http: // nombre de usuario : contraseña @ host / IP : puerto

npm config set proxy http: // nombre de usuario : contraseña @ host / IP : puerto

reemplazar los parámetros con los valores, en mi caso

nombre de usuario : (vacío)

contraseña : (vacía)

host / IP : 192.36.36.110

puerto : 8080

entonces mis comandos son

npm config set http_proxy http: //: @ 192.36.36.110: 8080

npm config set proxy http: //: @ 192.36.36.110: 8080

srujan maddula
fuente
0

CNTLM no funcionó para mí. Intenté todas las combinaciones posibles. NPM estaba dando error de autenticación. Fiddler vino a rescatarme y me ahorró tiempo. Es fácil de instalar y configurar. Establezca la regla de Fiddler en autenticado automáticamente. En .npmrc establezca estos

registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false

Funcionó para mí :)

usuario588459
fuente
0

Lo que funcionó para mí fue lo siguiente:

registry=http://registry.npmjs.org
proxy=http://<url.pac>
https-proxy=http://<url.pac>
http-proxy=http://<url.pac>
strict-ssl=false

No tuve que ingresar ningún nombre de usuario o contraseña, simplemente la URL del archivo PAC.

Kunal Nanda
fuente