NTMM代理背后的NPM

kol*_*kol 65 ntlm http-proxy node.js npm

是否可以在npm install使用NTLM身份验证的HTTP代理后面运行?如果是,我该如何设置服务器的地址和端口,用户名和密码?

kol*_*kol 129

我用这种方式解决了它(操作系统:Windows XP SP3):

1.下载CNTLM安装程序并运行它.

2.在cntlm.ini中查找并填写这些字段.不填写该Password字段,将未加密的密码存储在文本文件中绝不是一个好主意.

Username    YOUR_USERNAME
Domain      YOUR_DOMAIN
Proxy       YOUR_PROXY_IP:PORT
Listen      53128
Run Code Online (Sandbox Code Playgroud)

3.打开控制台,然后键入这些命令以生成密码哈希.

> cd c:\the_install_directory_of_cntlm
> cntlm -H
Password: ...type proxy password here...
PassLM          D6888AC8AE0EEE294D954420463215AE
PassNT          0E1FAED265D32EBBFB15F410D27994B2
PassNTLMv2      91E810C86B3FD1BD14342F945ED42CD6
Run Code Online (Sandbox Code Playgroud)

4.将以上三行复制到Domain字段行下的cntlm.ini中.再一次,不要填写该Password字段.保存cntlm.ini.

5.打开Service Manager(从命令行: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
Run Code Online (Sandbox Code Playgroud)

7.现在npm view,npm install等应该工作.例:

> npm view qunit
...nice answer, no errors :)
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`net start cntlm`直接从命令行启动cntlm (7认同)
  • @MichalBernhard不确定这是否是正确答案,但我注意到当注册表设置为默认值时(`https:// registry.npmjs.org`)`npm install <pkg> @ <version>`会"卡住"关于以下操作:`fetchMetadata:http fetch GET 304 https://registry.npmjs.org/isurl 280ms(来自缓存)`或`fetchMetadata:sill resolveWithNewModule uuid@2.0.3检查可安装状态`.一旦我按照答案中的建议更改了注册表,一切正常. (4认同)
  • 要使用CNTLM的NTLM授权,请按照以下说明操作:1.在步骤2之后,运行此命令行命令cntlm -I -M http://www.google.co.in 2.提示输入域密码 - 将其复制到cntlm. ini和重启服务3.生成以下密码哈希Auth NTLM PassNT XXXXXXXXXXXXXXXXXXXXXXXXXX PassLM XXXXXXXXXXXXXXXXXXXXXXXXXX (2认同)

Toi*_*lal 11

CNTLM的答案对我有用,但是由于连接错误导致npm无法使用.我通过在CNTML中添加此标头来修复它们.

Header      Connection: close
Run Code Online (Sandbox Code Playgroud)


小智 9

另一种方法是使用Px for Windows,代表您使用NTLM,如Cntlm和NTLMAps,而无需提供您的凭据.它通过SSPI使用登录用户的凭据.

  • 感谢您使用此工具!这绝对应该是这个线程的答案!我无法使cntlm工作,我的凭据总是被代理拒绝(407).Px就像一个魅力! (2认同)

adh*_*eek 8

您可以在需要使用npm时尝试运行Fiddler,而不是运行CNTLM .我发现这可以在相当封锁的环境中工作(例如投资银行).它也是一个非常容易构建业务案例的工具(如果需要),因为它对于检查/创建/更改HTTP流量非常有用.

由于使用了智能通行认证,我之前必须走这条路 - 即我们实际上没有密码.在那些地方建立CNTLM是不可能的.

  • 在启用规则“自动身份验证”之前,我很难使它起作用。 (2认同)

Dun*_*ken 6

您可以将设置作为参数传递:

npm --proxy=http://username:password@proxyserver:port --proxy-https=http://username:password@proxyserver:port --registry=http://registry.npmjs.org/ install whateveryouwanttoinstall
Run Code Online (Sandbox Code Playgroud)

  • 这是基本身份验证,而不是NTLM. (5认同)
  • @kol,这是真的,但使用NTLM auth的代理经常允许基本身份验证.在我看来,这种方法的问题是在NPM配置中存储其个人密码. (3认同)

小智 5

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
Run Code Online (Sandbox Code Playgroud)

它对我有用:)

另一个提琴手选项:

使Fiddler充当NTLM和其他协议的HTTP代理的第二种方法是保留自动身份验证选项/规则默认值,然后从菜单栏中转到此设置:

工具> Telerik Fiddler选项>连接选项卡

单击“ 允许远程计算机连接”复选框。您将看到一个对话框,说明启用此选项的后果。重新启动Fiddler并更新.npmrc文件,如上所示。每当需要npm来访问注册表站点时,只需运行Fiddler。此设置不会影响Fiddler进行其他捕获的方式。


Sun*_*abu 5

  1. .npmrc使用记事本打开C:\users\username\ 文件夹中的文件
  2. 添加以下几行..
  3. 用正确的值替换域、用户名、密码、服务器名
  4. 立即尝试安装或获取软件包
  5. 如果从 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
    
    Run Code Online (Sandbox Code Playgroud)