Можно ли запустить npm install
за прокси-сервером HTTP, который использует NTLM аутентификация? Если да, как я могу установить адрес и порт сервера, имя пользователя и пароль?
NPM за прокси-сервером NTLM
Ответы (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 :)
net start cntlm
- person adhocgeek; 19.12.2013
cntlm -c cntlm.ini -v -a ntlm -I
(убедитесь, что вы можете создать файл bat, чтобы обернуть его); вводите свой пароль каждый раз при запуске инструмента.
- person hardywang; 13.01.2015
cntlm -c cntlm.ini -v
, она останется на переднем плане (строка cmd) и предоставит много полезной информации.
- person Markus; 20.12.2016
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
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
Ответ CNTLM работал у меня, но из-за ошибок подключения npm нельзя было использовать. Я исправил их, добавив этот заголовок в CNTML.
Header Connection: close
Другой альтернативой является использование Px для Windows, который передает NTLM от вашего имени, например Cntlm и NTLMAps, без необходимости предоставления вашего реквизиты для входа. Он использует учетные данные вошедшего в систему пользователя через SSPI.
Вместо того, чтобы запускать CNTLM, вы можете попробовать запустить Fiddler, когда вам нужно использовать npm. Я обнаружил, что это работает в довольно закрытых средах (например, в инвестиционных банках). Это также инструмент, который довольно легко обосновать (если вам нужно), поскольку он бесценен для проверки / создания / изменения HTTP-трафика.
Раньше мне приходилось идти по этому пути из-за использования аутентификации smartpass, то есть у нас фактически не было паролей. В этих местах установка CNTLM была бы невозможна.
Automatically Authenticate
- person JonathanTech; 08.10.2014
Вы можете передать настройки как параметры:
npm --proxy=http://username:password@proxyserver:port --proxy-https=http://username:password@proxyserver:port --registry=http://registry.npmjs.org/ install whateveryouwanttoinstall
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 для других захватов.
- Откройте ваш
.npmrc
файл в папке C: \ users \ username \ с помощью блокнота. - Добавьте следующие строки ..
- Замените domain, username, pwd, servername своими правильными значениями
- Попробуйте установить или получить пакеты сейчас
Если вы пытаетесь из 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
CNTLM работал у меня, как было предложено KOL. Спасибо KOL за это. Сразу хотел добавить, что в отдельных прокси есть странности, из-за которых пароль может быть неприемлемым при использовании простого cntlm -H
.
Используйте cntlm -I -M http://test.com
и скопируйте приведенную ниже конфигурацию после удаления старых конфигураций, и вы должны пройти.
Результат похож на
---------------------------------------------------
Auth NTLM
PassNT 8EE9B595A89F7D8774C2146FB302CBCF
PassLM 78901DA9889727EDE28EF9F2769485B9
----------------------------------------------------