是否可以在使用NTLMnpm install
身份验证的 HTTP 代理后面运行?如果是,如何设置服务器的地址和端口、用户名和密码?
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 Authentication Proxy”的服务。
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 :)
CNTLM 答案对我有用,但连接错误使 npm 无法使用。我已通过在 CNXML 中添加此标头来修复它们。
Header Connection: close
另一种选择是使用Windows 的 Px,它可以像 Cntlm 和 NTLMAps 一样代表您与 NTLM 对话,而无需提供您的凭据。它通过 SSPI 使用登录用户的凭据。
您可以在需要使用 npm 时尝试运行Fiddler,而不是运行 CNTLM 。我发现这适用于相当封闭的环境(例如投资银行)。它也是一个相当容易为(如果需要)制作商业案例的工具,因为它对于检查/创建/更改 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\ 文件夹中的文件 - 添加以下行..
- 用正确的值替换域、用户名、密码、服务器名
- 立即尝试安装或获取软件包
如果从 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 前来救援,节省了我的时间。它易于安装和配置。将 Fiddler Rule 设置为 Automatically Authenticated.In .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 充当 NTLM 和其他协议的 HTTP 代理的第二种方法是保留自动身份验证选项/规则默认值并从菜单栏中转到此设置:
工具 > Telerik Fiddler 选项 > 连接选项卡
单击允许远程计算机连接复选框。您将看到一个对话框,解释启用此选项的后果。如上所示,重新启动 Fiddler 并更新.npmrc文件。每当您需要 npm 访问注册表站点时,只需运行 Fiddler。此设置不会影响 Fiddler 为其他捕获运行的方式。
CNTLM 按照 KOL 的建议为我工作。感谢KOL。只是想补充一点,个别代理中有一些奇怪之处,因此使用 simple 时密码可能无法接受cntlm -H
。
删除旧配置后使用cntlm -I -M http://test.com
并复制以下配置,您应该可以通过。
输出就像
---------------------------------------------------
Auth NTLM
PassNT 8EE9B595A89F7D8774C2146FB302CBCF
PassLM 78901DA9889727EDE28EF9F2769485B9
----------------------------------------------------