21

とを使ってみましexport http_proxy=http://[username]:[pwd]@[proxy]git config --global http.proxy http://[username]:[pwd]@[proxy]

私はそれを機能させることができませんでした。gitは基本認証を使用しているようです。

Initialized empty Git repository in /home/.../.git/
* Couldn't find host github.com in the .netrc file, using defaults
* About to connect() to github.com port 8080 (#0)
*   Trying 10.... * Connected to github.com (10....) port 8080 (#0)
* Proxy auth using Basic with user '...'
> GET http://github.com/sunlightlabs/fiftystates.git/info/refs HTTP/1.1
Proxy-Authorization: Basic MD...
User-Agent: git/1.6.1.2
Host: github.com
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive

< HTTP/1.1 407 Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to t
he Web Proxy filter is denied.  )
< Via: 1.1 ...
< Proxy-Authenticate: Negotiate
< Proxy-Authenticate: Kerberos
< Proxy-Authenticate: NTLM
< Connection: Keep-Alive
< Proxy-Connection: Keep-Alive
< Pragma: no-cache
< Cache-Control: no-cache
< Content-Type: text/html
< Content-Length: 4118
* The requested URL returned error: 407
* Closing connection #0
fatal: http://github.com/sunlightlabs/fiftystates.git/info/refs download error - The requested URL returned error: 407

グーグル検索は混合された、そしておそらく更新されていない結果を返しました。どこかでそれcurlは(だった?)内部で使用されたと書かれていますが、そのオプションは(だった?)コードに組み込まれています。例えば、

curl --proxy-ntlm --proxy ...:8080 google.com

動作し、gitで同じオプションを使用したいと思います。

ここでもう少し明確な答えが必要です:Windowsプロキシを介してgitを使用して成功した人はいますか?どのバージョンですか?

ありがとう。

4

9 に答える 9

26

デフォルトのNTLMクレデンシャル

デフォルトのNTLMクレデンシャルを使用するには、空のユーザー名とパスワードを入力します

git config --global http.proxy https://:@proxy:port

ISAServerのファイアウォールクライアント

git、npmなどのプロキシを設定する代わりに、MicrosoftのISAServer用ファイアウォールクライアントを使用できます。インストール後:

Start > Autostart > Microsoft Firewall Client Management

Settings tab > Manual specified ISA Server > proxy:port Web Browser tab > Uncheck "Enable web browser automatic configuration."

于 2015-08-20T19:38:18.980 に答える
23

Gitはバージョン1.7.10以降のNTLMプロキシ認証をサポートしています。関連するコミットはhttps://github.com/gitster/git/commit/dd6139971a18e25a5089c0f96dc80e454683ef0bです。

1.7.10 リリースノートでは、次のように簡単に説明しています。

* HTTP transport learned to authenticate with a proxy if needed.

NTLMであり、ユーザー/パスが必要な職場のプロキシを使用してテストに成功しました。次のコマンドを使用して自分でテストできます。

git config --global http.proxy http://user:password@proxy.com:port
git clone http://git.videolan.org/git/bitstream.git

よろしく、

于 2012-06-01T10:49:15.980 に答える
10

クローン作成は私にとっては機能しますが、HTTP経由でのみ機能します(企業のファイアウォールがssh / gitプロトコルをブロックするため):

$ export http_proxy="http://username:password@proxy:port/"
$ git clone http://github.com/sunlightlabs/fiftystates_site.git fifty
Initialized empty Git repository in /home/user/fifty/.git/
got e15f5192b923d8e87abaeb9406d0f4d80403da09
walk e15f5192b923d8e87abaeb9406d0f4d80403da09
got a78b792191f1cf5e961753dcfe05e9c809bdb0ed
got 76e6e86e72a0f998f7663da69ca49c457a302e27
walk 76e6e86e72a0f998f7663da69ca49c457a302e27
got 35b68a3b876fb90e73ba7a7eb51432e825ef2aa3
...

Githubは経由でクローンを作成することを提案していますが、手動でgit://github.com/...変更する必要があります。http://github.com/...

編集:私はgitバージョン1.5.6.3を使用しています。

お役に立てば幸いです。

于 2009-11-23T15:41:50.207 に答える
10

AndreaG(上記のコメント)は、私が見つけることができるこの問題に対する唯一の受け入れ可能な答えを持っています。GitはNTLMプロキシでは機能しないようですが、cURL(その下で使用)は問題なく機能するため、実際には機能するはずです。なぜこの問題を修正できないのか私にはわかりません。これはかなり一般的な問題のようです。

完全な解決策は、ntlmapsを使用してプロキシのプロキシとして機能することです。あなたがする必要があるのは、アプリの最新バージョンを http://ntlmaps.sourceforge.net/からダウンロードすることだけです。

認証とプロキシの詳細が含まれるように構成ファイルを変更してから、プロキシを新しいローカルプロキシに設定します。

git config --global http.proxy http://localhost:5865

正常に動作していることを確認できます。NTLM認証を必要とするが、完全なNTLMサポートを提供しないすべてのアプリに使用できるだけではありません。

于 2010-04-21T10:11:01.920 に答える
9

cntlmを使用することもできます。

http://cntlm.sourceforge.net/

ntlmapsに似ていますが、純粋なCで記述されたソリューションです。マシンのポート(デフォルトは3128)にローカルプロキシサーバー(127.0.0.1)を作成することにより、ntlmapsと同じように機能します。この新しくローカルに作成されたプロキシサーバーは認証を必要としないため、httpプロキシをサポートするすべてのアプリケーションで使用できます。必要に応じて、ローカルのSocksプロキシを作成することもできます。

Pythonで記述されたntlmapsに対する主な利点は、cntlmのCPUとRAMの使用率が非常に低く、通常は2%未満であることです。

于 2011-02-07T06:32:20.553 に答える
4

これは私がこの作品を作るために検索で見つけ続けた質問だったので、ここに私の答えを追加します。

1つのネットワークでhttp(s)プロキシ(NTLM認証が必要)を介して動作するgithub.comでホストされるリポジトリにアクセスし、通常のインターネット接続でもMacOSX開発マシンから動作させる必要がありました。

これが私がそれを機能させた方法です。これはすべてのgitホスティングプロバイダーで機能するわけではありませんが、これを理解するのに役立つ場合に備えて投稿しています。これもMacOSXの場合のみですが、システムのネットワーク変更で何かを実行する方法を理解した場合は、残りの部分に従う必要があります。

git clone git@github.com:user/repo.git通常どおりsshア​​クセスを設定した後に使用する必要がありました(http://help.github.com/mac-set-up-git/)。

次に、ntlmaps、cntlm、AuthoxyなどのNTLM認証を処理するローカルhttp(s)プロキシを設定する必要がありました。Authoxyでテストしました。独自のプロキシの詳細を知る必要があるため、これの構成はあなたに任せます。

sudo port install corkscrewMacPortsをお持ちの場合は、コルク栓抜きも必要です。

次に、以下を追加しました~/.ssh/config

Host github.com.disabled
User git
HostName ssh.github.com
Port 443
ProxyCommand /opt/local/bin/corkscrew localhost 6574 %h %p

6574はTCPポートであり、Authoxyをリッスンするように設定しました。

ここで、http(s)プロキシサーバーを見つけようとするスクリプトを作成し、見つけたものに応じてsshセットアップを構成します/usr/local/bin/locationchanger

#!/bin/sh

set -o nounset
set -o errexit

sleep 10 # allow for WiFi to actually connect.

# if we can find the proxy server, then use it.
if ! host proxy.internal.network;
then
    echo "Proxy server not found, clearing http(s) proxy";
    sed -i '.backup' -E 's/^Host github.com$/Host github.com.disabled/' "$HOME/.ssh/config"
else
    echo "Proxy server found, setting http(s) proxy";
    sed -i '.backup' -E 's/^Host github.com.disabled$/Host github.com/' "$HOME/.ssh/config"
fi
echo "Done."

することを忘れないでくださいchmod +x /usr/local/bin/locationchanger

次に作成します~/Library/LaunchAgents/LocationChanger.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>tech.inhelsinki.nl.locationchanger</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/locationchanger</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Library/Preferences/SystemConfiguration</string>
    </array>
</dict>
</plist>

そしてlaunchctl load ~/Library/LaunchAgents/LocationChanger.plist。この起動されたジョブは、ネットワークが変更されるたびに実行されます。内部ネットワークのhttp(s)プロキシサーバーが見つかった場合、sshはcorkscrewを使用してAuthoxyを介して動作し、Authoxyは会社のプロキシを介して動作します。プロキシサーバーが見つからない場合は、特別なssh構成が無効になり、通常どおりに機能します。

これで、私たちのチームはネットワークスイッチングについて考える必要がなくなりました。

于 2011-06-21T10:54:30.963 に答える
4

TL / DR:

export GIT_HTTP_PROXY_AUTHMETHOD=basic

また

git config --global http.proxyauthmethod basic

git(curl)プロキシ認証が機能しなかったときに同じ問題が発生しました。クレデンシャルは正しかった。最新のgit-v2.15.0へのアップグレードは役に立ちませんでした。

この問題は、git-libcurlによって選択されたプロキシ認証方法が間違っていることが原因でした。

有効なproxy_authmethodオプションは、gitソースで定義されています: https ://github.com/git/git/blob/d0e9983980a25e0c398cc03342e5ad22ef85b8a8/http.c#L81

GIT_HTTP_PROXY_AUTHMETHODproxyauthmethodは、環境変数またはgitconfigオプションのいずれかを介して定義できhttp.proxyauthmethodます。環境変数は、構成オプションの値をオーバーライドします。

于 2017-11-27T13:44:35.667 に答える
3

私はntlmapsを使用していて、Windows / NTプロキシを介して良い結果を得ています:http://ntlmaps.sourceforge.net/

gitの構成は次のとおりです。

git config --global http.proxy http:// localhost:5865

于 2010-11-24T01:04:53.510 に答える
0

私は、gitだけでなく、コマンドベースのインストーラーでも機能する、より簡単でおそらくより安全なソリューションに出くわしました

  • ルビーのRubygems
  • ノードのnpm

コマンドラインからすべてのトラフィックを実行する1つのソリューションは、認証でプロキシされます。

パスワードをuser:password @ domain:port形式で公開しない

解決:

Fiddlerをダウンロードします。これには、すべてのリクエストに認証ヘッダーを追加する方法が組み込まれています。

メニューの[ルール]->[自動認証]を実行したら(チェックマークを付けます)

次にgitの場合

git config --global http.proxy http://localhost:8888
git config --global https.proxy http://localhost:8888

それでおしまい!

于 2018-01-17T23:48:06.847 に答える