NPM за прокси NTLM
Можно ли бежать npm install
за HTTP-прокси, который использует проверку подлинности 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 http://registry.npmjs.org
7. Сейчас npm view
, npm install
и т.д. должно работать. Пример:
> npm view qunit
...nice answer, no errors :)
Другой альтернативой является использование Px для Windows, который говорит NTLM от вашего имени, например Cntlm и NTLMAps, без необходимости предоставлять свои учетные данные. Он использует учетные данные пользователя, вошедшего в систему через SSPI.
Ответ CNTLM работал для меня, но из-за ошибок подключения сделать npm непригодным для использования. Я исправил их, добавив этот заголовок в CNTML.
Header Connection: close
Вместо запуска CNTLM, вы можете вместо этого попробовать запустить Fiddler, когда вам нужно использовать npm. Я обнаружил, что это работает в довольно закрытой среде (например, инвестиционные банки). Это также инструмент, с которым довольно легко составить экономическое обоснование (если нужно), поскольку он неоценим для проверки / создания / изменения HTTP-трафика.
Раньше мне приходилось идти по этому пути из-за использования аутентификации smartpass - то есть у нас фактически не было паролей. В этих местах установка CNTLM была бы невозможна.
Вы можете передать настройки в качестве параметров:
npm --proxy=http://username:password@proxyserver:port --proxy-https=http://username:password@proxyserver:port --registry=http://registry.npmjs.org/ install whateveryouwanttoinstall
- Открыть свой
.npmrc
файл в папке C:\users\username\ с помощью блокнота - Добавьте следующие строки..
- Замените домен, имя пользователя, pwd, имя сервера на правильные значения
- Попробуйте установить или получить пакеты сейчас
Если пробовать от Vs2017, закрыть и снова открыть VS IDE, то только это работает
proxy=http://DOMAIN%5CUSERNAME:PWD@proxy.servername.com:6050 https-proxy=http://DOMAIN%5CUSERNAME:PWD@proxy.servername.com:6050 http-proxy=http://DOMAIN%5CUSERNAME:PWD@proxy.servername.com:6050 strict-ssl=false
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:
Второй способ заставить Fiddler выступать в качестве HTTP-прокси для NTLM и других протоколов - это оставить настройки по умолчанию для параметров / правил автоматической аутентификации и перейти к этой настройке из строки меню:
Сервис> Параметры Telerik Fiddler> вкладка Подключения
Установите флажок Разрешить удаленным компьютерам подключаться. Вы увидите диалог, объясняющий последствия включения этой опции. Перезапустите Fiddler и обновите файл .npmrc, как показано выше. Всякий раз, когда вам нужен npm для доступа к реестру, просто запустите Fiddler. Этот параметр не повлияет на работу Fiddler для других снимков.
CNTLM работал для меня, как предложено KOL. Спасибо KOL за это. Просто хотел добавить, что в отдельных прокси есть некоторые странности, из-за которых пароль может быть неприемлемым при использовании простого cntlm -H
,
использование cntlm -I -M http://test.com
и скопируйте приведенный ниже конфиг после стирания старых конфигов, и вы должны пройти.
Выход похож
---------------------------------------------------
Auth NTLM
PassNT 8EE9B595A89F7D8774C2146FB302CBCF
PassLM 78901DA9889727EDE28EF9F2769485B9
----------------------------------------------------