Windowsで認証プロキシの背後にNPMをインストールする方法は?


30

WindowsでNodeとNPMの最新バージョンを実行する必要があります。Node 0.5.8をインストールし、GitHubからNPMのソースをダウンロードしました。NPMをインストールするための手順は、GitHubサイトに記載されていますが、次のコマンドの実行に問題があります。

node cli.js install npm -gf

ただし、次のエラーメッセージで失敗します。

Error: connect UNKNOWN
at errnoException (net_uv.js:566:11)
at Object.afterConnect [as oncomplete] (net_uv.js:557:18)

System Windows_NT 5.1.2600
command "...\\Node\\bin\\node.exe" "...\\npm\\cli.js" "install" "npm" "-gf"
cwd ...\npm
node -v v0.5.8
npm -v 1.0.94
code UNKNOWN

インターネットに接続するにはプロキシで認証が​​必要なので、これは問題だと思います。しかし、ログインに資格情報を使用するようインストーラーに指示する方法が見つかりませんでした。コマンドライン引数を使用して、プロキシIPとログイン情報をnpmインストールに提供する可能性はありますか?

必要に応じてpastebinを使用して、完全なログを提供できます(ただし、関連する情報はもうないようです)。


6
ユーザ名が含まれている場合は少しトリックは、ドメイン\ユーザ表記は、httpエスケープコード(%の5C)とバックスラッシュ置換

@layosどうもありがとうございます。これがredditであった場合、私はあなたに金を与えます。
コリンナ

回答:


39

set http_proxy私にとっては本当にうまくいきましたが、コマンドプロンプトを開くたびに入力する必要がありました。だから私は複数の答えを組み合わせる必要があり、今では私のものは永続的です。

私のシーケンスは次のとおりです。

  • に行く C:\Users\YourUserName
  • という名前のファイルを作成する .npmrc
  • そのファイル内に次のように入力します(ADドメインを使用している場合):

proxy = http://domain\\username:password@ip:port

  • またはこれを使用すると、ADドメインにいないことになります:

proxy = http://username:password@ip:port

  • ファイルを保存する
  • コマンドプロンプトを開いて使用してみてください npm

その他のコマンドは、次の追加コマンドでさらに成功しています。

strict-ssl = false

*上記の「IP」の代わりに、IPアドレスまたはプロキシのURLを使用できる必要があります。

プロキシ文字列を少し調整する必要があるかもしれませんが、これにより、毎回これを追加する必要がなくなりました。

乾杯


3
パスワードに「@」が含まれている場合、npmはプロキシ設定を正しく解析しません。潜在的な回避策は、npm configに偽のusername:passwordを入れ、ローカルプロキシ(フィドラーなど)を使用して、リクエストのProxy-Authorizationヘッダーを修正して正しいusername:passwordにすることです。Proxy-Authorizationに保存されているusername:passwordはbase64でエンコードされていることに注意してください。
BStruthers

9
私と仕事をしました:proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/ strict-ssl = false
ルーク

1
私のusername:passwordを動作させることができませんでした
philx_x

1
ちょっと、オプションの変更domain\\user:password@urltoproxy:portを実行npm installするときに使用してみましたが、domain/user:password@urltoproxy:portどうすればこれを回避できますか?
ジェイコブシュナイダー

私は私の.npmrcに、@JacobSchneiderと同じ問題を抱えている:-ssl=false registry=http://registry.npmjs.org/ proxy=http://domain\\username:password#@proxy.url:8080 そして、私は設定から設定を取得する場合npm config get proxyhttp://domain/username:password#@proxy.url:8080 注意しているスラッシュ「/」へエスケープバックスラッシュ「\\」の変更
pompalini

10

環境変数を設定するとうまくいくかもしれません:

set HTTP_PROXY=http://user:pass@server.url:port

(私の場合、これは「connect UNKNOWN」を解決しますが、まったく異なる「ソケットのハングアップ」エラーが発生します。HTTPS_PROXY環境変数も設定しようとしましたが、同じ結果になりました。)


環境変数を設定し、コマンドに--proxy user:pass@server.url:port渡そうとしましたが、常にECONNREFUSEDを取得しました。プロキシログインにADドメインを指定する必要がありますか?
トバイアス

@トビアストライset HTTP_PROXY=http://domain\user:pass@server.url:port
アダムグラント

8

私はこの同一の問題を抱えていたので、この仕事をするために私がしたことは次のとおりです。

  • に行きます: C:\Users\YourUserName
  • という名前のファイルを作成する .npmrc
  • そして、そのエントリは次のようになります。

    registry = http://registry.npmjs.org
    
  • コマンドをnode cli.js install npm -gf再試行してください。


あなたが言及した内容でファイルを作成しましたが、まだ接続UNKNOWNエラーを取得しています:(
トビアス

これに乾杯。https://を回避するために「npm config set registry registry.npmjs.org」を実行しましたが、これはすべて私のWindowsセットアップでうまくいきました。
ギャビンギルモア

1
誰かがETIMEOUTメッセージがでプロキシ設定を追加取得する場合node config set proxy http://username:password@server:port
ジェレミーS.

私の仕事は何作成して~/.npmrc使用するように、NPMに指示され、上記のようなファイルをhttp://代わりにレジストリをhttps://して、私の設定http_proxyに環境変数をhttp://myusername:mypassword@proxy.company.com:1234
MAXY-B

パスワードに「@」が含まれている場合、npmはプロキシ設定を正しく解析しません。潜在的な回避策は、npm configに偽のusername:passwordを入れ、ローカルプロキシ(フィドラーなど)を使用して、リクエストのProxy-Authorizationヘッダーを修正して正しいusername:passwordにすることです。Proxy-Authorizationに保存されているusername:passwordはbase64でエンコードされていることに注意してください。
BStruthers

4

いくつかの研究の後、私はこの方法でそれを使用することができました:

  1. NTLM認証プロキシサーバーまたはNTLM用の別のプロキシサーバー(Cntlmなど)をインストールします。個人的には、私はpythonサーバーを好みます。なぜなら、私はそれをいじることができ、パフォーマンスは問題ではないからです。

  2. 構成をセットアップします。私の場合、LMモードとNTモードの両方を有効にする必要がありましたが、現在は通常のモードであると思われます。

  3. ローカルプロキシを指すようにhttp_proxyおよびhttps_proxy環境変数を設定します。

    set http_proxy = "localhost:5865"
    set https_proxy = "localhost:5865"

  4. npmが動作するはずです。もちろん、上記の環境変数が定義されているシェルから実行する必要があります。


3

次は私のために働いた。

Windows 7の場合:

npm config set proxy xxhttp://username:password@proxyhost:port# 

これ.npmrcにより、C:/users/<username>フォルダ内に名前の付いたファイルが作成されます。


3

これをコマンドラインに入力します。

npm set proxy http://user:pass@ip:port

npm set https-proxy http://user:pass@ip:port

ユーザー名の前にHTTP://を含めることを忘れないでください。それは私のために働いた。


2

上記のように.npmrcファイルを作成し、adduserコマンドを実行し、cmdプロンプトを実行した後、この問題は解決しました。

npm adduser

次のコマンドを実行して、承認されたユーザー名があるかどうかを確認します。

npm whoami

2

上記の各回答では、ユーザーがパスワードをテキストファイルまたは環境変数に書き込む必要があります。

個人的には、安全でないアプローチのために、このようなソリューションは好きではありませんでした。そこで、クライアント(npm、bower、git)とプロキシの間のやり取りで、現在のユーザーのKerberosトークンを注入するアプリケーションを作成しようとしました。ただし、Active DirectoryはKerberosの独自の実装にすぎません。

私はこのソフトウェアをWindows 8.1ホストで毎日使用しています。コード(golang)と最初のリリースのバイナリはhttps://github.com/nilleb/authentication-proxyで見つけることができます


1

.npmrcで3つのことすべてが私のために働いた

proxy = http://unam:pwd@host:port
https-proxy = http://unam:pwd@host:port
registry = http://registry.npmjs.org

1

少なくともWindowsでは、次の設定で動作します。

proxy = http:// ドメイン%5C ユーザー名パスワード @ proxy_ipポート

すなわち、(1)を使用する%5C代わりのを\(他の場所で示唆したように)及び(2)の代わりにプロキシサーバーのローカルマシン名のIPアドレスを使用します。


これは正しいです-ドメイン+ユーザー名とパスワードは、個別にURLエンコードする必要があります。たとえば、パスワードに#が含まれている場合、それを%23に置き換えます
-saille

1

サーバー管理者またはサポートからプロキシホストとポートを取得します。

設定後

npm config set http_proxy http://username:password@proxyofmycomp.com:itsport
npm config set proxy http://username:password@proxyofmycomp.com:itsport

パスワードに特殊文字が含まれている場合は、%urlencodeを試してください。例:-pound(hash)shuoldは%23に置き換えられます。


2
3年以上前に質問された場合、どのバージョンの回答が適用されますか?
ジェイソンアラ

私はそれが問題ではないと信じています。私は多くのことをしようとした後、この問題に対する解決策を見つけ、決して私のパスワードがissue.In順序は関係なく質問をしても10年前に頼まれなかったこと、完璧なanwser作るために作っていたことを知っていた:)...
Shamseer

0

私のために働いた解決策は次のとおりです:

npm config set http_proxy http:// usernamepassword @ host / IPport

npm config set proxy http:// usernamepassword @ host / IPport

私の場合、パラメータを値に置き換えます

ユーザー名:(空)

パスワード:(空)

ホスト/ IP:192.36.36.110

ポート :8080

だから私のコマンドは

npm config set http_proxy http://:@ 192.36.36.110:8080

npm config set proxy http://:@ 192.36.36.110:8080


0

CNTLMはうまくいきませんでした。すべての可能な組み合わせを試しました。NPMは認証エラーを出していました。フィドラーは救助のために来て、私の時間を節約しました。インストールと構成は簡単です。Fiddlerルールを自動認証に設定します。

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

それは私のために働いた:)


0

私のために働いたのは次のとおりでした:

registry=http://registry.npmjs.org
proxy=http://<url.pac>
https-proxy=http://<url.pac>
http-proxy=http://<url.pac>
strict-ssl=false

ユーザー名やパスワードを入力する必要はなく、単にPACファイルのURLを入力しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.