NPM за прокси-сервером NTLM

Можно ли запустить npm install за прокси-сервером HTTP, который использует NTLM аутентификация? Если да, как я могу установить адрес и порт сервера, имя пользователя и пароль?


person kol    schedule 02.09.2013    source источник


Ответы (8)


Я решил это так (ОС: Windows XP SP3):

1. Загрузите установщик CNTLM и запустите его.

2. Найдите и заполните эти поля в cntlm.ini. Не заполняйте поле Password, никогда не рекомендуется хранить незашифрованные пароли в текстовых файлах.

Username    YOUR_USERNAME
Domain      YOUR_DOMAIN
Proxy       YOUR_PROXY_IP:PORT
Listen      53128

3. Откройте консоль и введите эти команды, чтобы сгенерировать хэши паролей.

> cd c:\the_install_directory_of_cntlm
> cntlm -H
Password: ...type proxy password here...
PassLM          D6888AC8AE0EEE294D954420463215AE
PassNT          0E1FAED265D32EBBFB15F410D27994B2
PassNTLMv2      91E810C86B3FD1BD14342F945ED42CD6

4. Скопируйте указанные выше три строки в cntlm.ini под строкой поля Domain. Еще раз не заполняйте поле Password. Сохраните cntlm.ini.

5. Откройте диспетчер служб (из командной строки: services.msc) и запустите службу под названием «Прокси-сервер проверки подлинности CNTLM».

6. В консоли введите следующие строки:

> npm config set proxy http://localhost:53128
> npm config set https-proxy http://localhost:53128
> npm config set registry https://registry.npmjs.org

7. Теперь npm view, npm install и т. д. должны работать. Пример:

> npm view qunit
...nice answer, no errors :)
person kol    schedule 02.09.2013
comment
Вы можете запустить cntlm прямо из командной строки с помощью net start cntlm - person adhocgeek; 19.12.2013
comment
Для использования авторизации NTLM с CNTLM выполните следующие инструкции: 1. После шага 2 запустите эту команду командной строки cntlm -I -M google.co.in 2. Запрашивает пароль домена - скопируйте его в cntlm.ini и перезапустите службу 3. Создает следующий хэш пароля Auth NTLM PassNT XXXXXXXXXXXXXXXXXXXXXXXXXXX PassLM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - person amar; 17.02.2014
comment
нашел ссылку, где подробно объяснено stackoverflow.com/a/15437508/224700 - person amar; 18.02.2014
comment
отличное решение, спасибо, одно примечание - в пункте 6 выше URL-адрес адреса должен иметь префикс http, а не https - person Mike; 26.08.2014
comment
Для тех, кто не любит использовать службу Windows или иметь информацию в файле INI, есть другой способ: загрузить версию portalbe; полностью удалить домен / имя пользователя / пароль из INI-файла; запустите инструмент из командной строки, используя cntlm -c cntlm.ini -v -a ntlm -I (убедитесь, что вы можете создать файл bat, чтобы обернуть его); вводите свой пароль каждый раз при запуске инструмента. - person hardywang; 13.01.2015
comment
Чтобы исправить ошибки подключения на некоторых прокси NTLM, настройте этот заголовок в Cntml: Header Connection: close - person Toilal; 07.05.2015
comment
если вам нужно отладить соединения или проверить правильность конфигурации, запустите ее с cntlm -c cntlm.ini -v, она останется на переднем плане (строка cmd) и предоставит много полезной информации. - person Markus; 20.12.2016
comment
зачем менять реестр? в чем проблема с одним (ами) по умолчанию? - person Michal Bernhard; 09.02.2017
comment
@MichalBernhard Не уверен, что это правильный ответ, но я заметил, что когда реестр был установлен по умолчанию (https://registry.npmjs.org) npm install <pkg>@<version> зависал при выполнении такой операции, как: fetchMetadata: http fetch GET 304 https://registry.npmjs.org/isurl 280ms (from cache) или fetchMetadata: sill resolveWithNewModule [email protected] checking installable status. Как только я изменил реестр, как было предложено в ответе, все заработало нормально. - person Spencer R; 18.07.2017
comment
Не работает в Windows 10. Получение этой ошибки: npm ERR! code E418 npm ERR! 418 I'm a teapot - GET http://registry.npmjs.org/create-react-app - got unknown host (registry.npmjs.org:80) npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\faizanmubasher\AppData\Roaming\npm-cache\_logs\2019-08-22T07_22_44_767Z-debug.log Install for create-react-app@latest failed with code 1 - person Faizan Mubasher; 22.08.2019
comment
У меня та же проблема, что и у Файзана Мубашера непосредственно выше - решение найдено здесь. @kol - Предлагает обновить сообщение, чтобы установить в реестре значение http s: //registry.npmjs.org. - person Steve Chambers; 27.11.2019
comment
@SteveChambers Готово. Спасибо. - person kol; 27.11.2019

Ответ CNTLM работал у меня, но из-за ошибок подключения npm нельзя было использовать. Я исправил их, добавив этот заголовок в CNTML.

Header      Connection: close
person Toilal    schedule 07.05.2015
comment
Привет, Тойлал, нужен ли этот заголовок, когда вы выполняете много запросов через npm install, потому что затем 20 раз npm останавливается из-за проблем с сетью ... устранит ли это проблему, когда вы выполните первоначальную установку npm после проверки репо? - person HelloWorld; 17.12.2019
comment
@HelloWorld кажется таким. (старый ответ, мне больше не нужно использовать CNTML) - person Toilal; 28.01.2020
comment
Сейчас я использую прокси-сервер python px, работает намного лучше / стабильнее! - person HelloWorld; 31.01.2020

Другой альтернативой является использование Px для Windows, который передает NTLM от вашего имени, например Cntlm и NTLMAps, без необходимости предоставления вашего реквизиты для входа. Он использует учетные данные вошедшего в систему пользователя через SSPI.

person genotrance    schedule 19.08.2016
comment
Попробовали, и он сработал так же хорошо, как CNTLM. Больше не нужно управлять хешированными паролями! Мне это нравится. - person Rabid; 22.12.2016
comment
Спасибо за вашу работу над этим инструментом! Это определенно должно быть ответом на эту тему! Мне не удалось заставить cntlm работать, мои учетные данные всегда отклонялись прокси (407). Px работает как шарм! - person Gregory_Ott; 13.01.2017
comment
Черт возьми! Это отличный инструмент! И npm отлично работает с px, когда cntlm зависает. - person Renat Zaripov; 13.07.2018
comment
PX работал у меня, а CNTLM - нет. PX также без проблем работал с maven, IntelliJ и JVM в целом. - person user1884155; 18.04.2019

Вместо того, чтобы запускать CNTLM, вы можете попробовать запустить Fiddler, когда вам нужно использовать npm. Я обнаружил, что это работает в довольно закрытых средах (например, в инвестиционных банках). Это также инструмент, который довольно легко обосновать (если вам нужно), поскольку он бесценен для проверки / создания / изменения HTTP-трафика.

Раньше мне приходилось идти по этому пути из-за использования аутентификации smartpass, то есть у нас фактически не было паролей. В этих местах установка CNTLM была бы невозможна.

person adhocgeek    schedule 29.08.2014
comment
У меня были проблемы с тем, чтобы это работало, пока я не включил правило Automatically Authenticate - person JonathanTech; 08.10.2014
comment
Вы спасли меня! Большое спасибо. - person SHUMING LU; 13.01.2021

Вы можете передать настройки как параметры:

npm --proxy=http://username:password@proxyserver:port --proxy-https=http://username:password@proxyserver:port --registry=http://registry.npmjs.org/ install whateveryouwanttoinstall
person Dunken    schedule 31.01.2014
comment
Это обычная проверка подлинности, а не NTLM. - person kol; 07.05.2015
comment
@kol, это правда, но прокси, которые используют NTLM-аутентификацию, часто также позволяют базовую аутентификацию. На мой взгляд, проблема этого метода заключается в хранении личного пароля в конфигурации NPM. - person mcoolive; 30.09.2015
comment
это не https-прокси вместо прокси-https? - person Srichakradhar; 08.01.2018
comment
Я проголосовал против, потому что это базовая аутентификация, и НЕПРАВИЛЬНО, что большинство прокси-серверов ntlm также разрешают базовую аутентификацию. Это полностью зависит от системных администраторов, а не по умолчанию, которое обычно бывает истинным. - person user1884155; 16.04.2019

CNTLM у меня не работал. Перепробовал все возможные комбинации. NPM выдавал ошибку аутентификации. Скрипач пришел на помощь и сэкономил мне время. Легко установить и настроить. Установите для правила Fiddler значение Автоматическая аутентификация. В .npmrc установите эти

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

У меня сработало :)

Другой вариант для скрипачей:

Второй способ заставить Fiddler действовать как HTTP-прокси для NTLM и других протоколов - оставить параметры / правила автоматической аутентификации по умолчанию и перейти к этому параметру в строке меню:

Инструменты> Параметры Telerik Fiddler> вкладка Подключения

Установите флажок Разрешить удаленным компьютерам подключаться. Вы увидите диалоговое окно, объясняющее последствия включения этой опции. Перезапустите Fiddler и обновите файл .npmrc, как показано выше. Когда вам понадобится npm для доступа к сайту реестра, просто запустите Fiddler. Этот параметр не повлияет на работу Fiddler для других захватов.

person Rakesh Sharma    schedule 29.04.2016
comment
Вы по-прежнему можете использовать cntlm, вам просто нужно установить эти прокси-строки как любой порт прослушивания в вашем файле cntlm.ini. CNTLM может потребоваться, если вы выполняете аутентификацию на прокси-сервере с учетными данными. - person Bhetzie; 16.11.2016

  1. Откройте ваш .npmrc файл в папке C: \ users \ username \ с помощью блокнота.
  2. Добавьте следующие строки ..
  3. Замените domain, username, pwd, servername своими правильными значениями
  4. Попробуйте установить или получить пакеты сейчас
  5. Если вы пытаетесь из Vs2017, закройте и снова откройте VS IDE, тогда работает только он

    proxy=http://DOMAIN%5CUSERNAME:[email protected]:6050   
    https-proxy=http://DOMAIN%5CUSERNAME:[email protected]:6050  
    http-proxy=http://DOMAIN%5CUSERNAME:[email protected]:6050   
    strict-ssl=false
    
person Sundara Prabu    schedule 16.04.2018
comment
Это сработало для меня. Все, что мне нужно сделать, это указать значения urlencode. В моем пароле были специальные символы. - person ferosekhanj; 13.08.2018

CNTLM работал у меня, как было предложено KOL. Спасибо KOL за это. Сразу хотел добавить, что в отдельных прокси есть странности, из-за которых пароль может быть неприемлемым при использовании простого cntlm -H.

Используйте cntlm -I -M http://test.com и скопируйте приведенную ниже конфигурацию после удаления старых конфигураций, и вы должны пройти.

Результат похож на

---------------------------------------------------
Auth            NTLM
PassNT          8EE9B595A89F7D8774C2146FB302CBCF
PassLM          78901DA9889727EDE28EF9F2769485B9
----------------------------------------------------
person kausik sen    schedule 02.06.2016