是否可以在npm install
使用NTLM身份验证的HTTP代理后面运行?如果是,如何设置服务器的地址和端口,用户名和密码?
是否可以在npm install
使用NTLM身份验证的HTTP代理后面运行?如果是,如何设置服务器的地址和端口,用户名和密码?
Answers:
我通过以下方式解决了此问题(操作系统: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.将以上三行复制到该Domain
字段下的cntlm.ini中。再一次,不要填写该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 :)
https://registry.npmjs.org
)时npm install <pkg>@<version>
,“”操作会“卡住”:fetchMetadata: http fetch GET 304 https://registry.npmjs.org/isurl 280ms (from cache)
或fetchMetadata: sill resolveWithNewModule uuid@2.0.3 checking installable status
。一旦按照答案中的建议更改了注册表,一切都可以正常工作。
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
CNTLM答案对我有用,但是由于连接错误而使npm无法使用。我通过在CNTML中添加此标头来修复它们。
Header Connection: close
另一个替代方法是使用Windows Px,它可以代表您与Cntlm和NTLMAps等NTLM通讯,而无需提供凭据。它通过SSPI使用登录的用户凭据。
您无需运行CNTLM,而可以在需要使用npm时尝试运行Fiddler。我发现这在相当封闭的环境(例如投资银行)中有效。这也是一种很容易为您提供业务案例的工具(如果需要),因为它对于检查/创建/更改HTTP流量非常宝贵。
由于使用了SmartPass身份验证,我不得不走这条路-即我们实际上没有密码。在那些位置设置CNTLM是不可能的。
Automatically Authenticate
您可以将设置作为参数传递:
npm --proxy=http://username:password@proxyserver:port --proxy-https=http://username:password@proxyserver:port --registry=http://registry.npmjs.org/ install whateveryouwanttoinstall
CNTLM对我不起作用。我尝试了所有可能的组合。NPM正在提供身份验证错误。提琴手来救援,节省了我的时间。易于安装和配置。将Fiddler Rule设置为自动认证。在.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进行其他捕获的方式。
.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按照KOL的建议为我工作。感谢KOL。只是想补充一点,个别代理中有一些奇怪之处,因此使用simple时可能无法接受密码cntlm -H
。
cntlm -I -M http://test.com
删除较旧的配置后,请使用并复制以下配置,您应该已完成。
输出就像
---------------------------------------------------
Auth NTLM
PassNT 8EE9B595A89F7D8774C2146FB302CBCF
PassLM 78901DA9889727EDE28EF9F2769485B9
----------------------------------------------------
net start cntlm