web-dev-qa-db-ja.com

npmは1つのプロキシの背後にインストールされますが、Http Error = 407を取得しました(Forefront TMGには認証が必要です)

オペレーティングシステムはMacOSであり、ネットワーク設定内にhttp(s)プロキシを既にセットアップしていますが、npm installの実行時に常にパッケージのインストールに失敗しました(npmはnodejsの1つのパッケージインストーラーです)ターミナルでは、エラー407 Proxy Authentication Requiredが表示されました。

そこで、cntlmをインストールし、正しい構成を適用しました。

以下はテストであり、pass(HTTPコード200を返す)のようです:

cntlm -c /usr/local/etc/cntlm.conf -I -M http://registry.npmjs.org/vue
Password: 
Config profile  1/4... OK (HTTP code: 200)
----------------------------[ Profile  0 ]------
Auth            NTLMv2
PassNTLMv2      28B089518C6573274C6B9D83D0XXXXXX

npm i vue-cli -gを実行すると、cntlmは次のようにリクエストを受信しました。

cntlm -c /usr/local/etc/cntlm.conf -f
Oct 15 15:12:29  cntlm[17646] <Info>: Cntlm ready, staying in the foreground
Oct 15 15:12:38  cntlm[17646] <Info>: Using proxy company-proxy:80
Oct 15 15:12:38  cntlm[17646] <Debug>: 127.0.0.1 GET http://registry.npmjs.org/nexe

しかしnodejs以下の例外を破棄しました:

npm i vue-cli -g
npm ERR! code E407
npm ERR! 407 Proxy Authentication Required ( Forefront TMG requires authorization to fulfill the request. Access to the Web Proxy filter is denied.  ): vue-cli@latest

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/****/.npm/_logs/2018-10-15T23_13_47_019Z-debug.log

それは私を混乱させました:テストがPASSであるため、しかしなぜcntlmはまだnpmjs.orgに接続できなかったのですか?

1
Sphinx

最後にソリューションを見つけてください:

  1. プレーンテキストのパスワードは使用しないでください(1つ追加します#Password行の先頭、たとえばchange Password XXXから#Password XXX

  2. 代わりにPassLMPassNTPassNTLMv2を使用してください(ハッシュ値は認証ハンドシェイクメカニズムを再び妨げるようです。つまり、あなたが代理を務めていることを意味します。ログインしたWindowsユーザーアカウントを持つアプリケーション)。

デフォルトのcntlm設定ファイルには、それらを生成する手順がすでに導入されています。

私の手順以下のとおりです。

  1. 実行cntlm -H -d your_domain -u your_username

  2. 次に、パスワードの入力を求め、パスワードを入力してからEnterを押します。

出力は次のようになります。

Password:
PassLM          F5314AF8A2DB16BDB7EE9FA6CFC5BC9A
PassNT          4EC02E0D65F8F0C1A9386C69CB6A2555
PassNTLMv2      28B089518C6573274C6B9D83D0EB8651 
  1. 上記のハッシュ値を構成ファイルの関連フィールドに貼り付けます。

  2. 保存してから再起動しますcntlm、動作します。

1
Sphinx