Gitをプロキシサーバーで動作させる-「リクエストがタイムアウトしました」で失敗する


918

Gitでプロキシサーバーを使用するにはどうすればよいですか?

Gitサーバーからコードをチェックアウトする必要がありますが、毎回「リクエストがタイムアウトしました」と表示されます。どうすればこれを回避できますか?

または、プロキシサーバーを設定するにはどうすればよいですか?


これはgitクライアントの設定項目ではないでしょうか?cmd.exeが関係しているように見える唯一の側面は、gitクライアントが環境変数でプロキシを指定できるようにすることです。
マイケル・バー、

この問題自体はgit固有なので、元の質問を編集してすべてのWindows参照を削除しました。
PlagueHammer、2010



3
この質問の答えのほとんどは、HTTPプロキシに関するものです。あなたはSOCKSプロキシを使用している場合は、参照この質問を HTTP / Sのためのプロトコル、この1 //プロトコル:gitのため。
ユーザーの

回答:


1634

使用するコマンド:

git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
  • proxyuserプロキシユーザーに変更する
  • proxypwdプロキシパスワードに変更する
  • proxy.server.comプロキシサーバーのURLに変更します。
  • 8080プロキシサーバーで構成されているプロキシポートに変更する

これはhttpとhttpsの両方のリポジトリで機能することに注意してください。

いつでもこのプロキシをリセットしてプロキシなしで作業することにした場合:

使用するコマンド:

git config --global --unset http.proxy

最後に、現在設定されているプロキシを確認します。

git config --global --get http.proxy

15
サリムに感謝します。私はURLにproxyuser:proxypwdがなくても機能しました。
Kwex 2014年

11
みんなありがとう。私にとっては、NTLMベースの認証であり、.gitconfigを更新するだけでは機能しませんでした:(。NTLM認証を使用するCNTLMを取得する必要がありました。ネットワークのプロキシサーバーにCNTLMをポイントし、ソフトウェアをポイントするだけで済みました。 。ローカルプロキシへのアップデートマネージャ(YUMのような、apt-getのまたはssh)クローンのようなgitの操作の場合は、http.proxyを引くには、ローカルサーバーと私のローカルで構成されたプロキシた。
マユールNagekar

9
こんにちは、「@」文字が含まれている場合、proxypassを設定するにはどうすればよいですか?私はこのキャラクターを
回避し

13
@patricK in username / password文字列の%40代わりに使用できますが、@私はこれを自分でテストしていません。それが役に立てば幸い。:-)
Sourav Ghosh

14
@patricK @ 40の代わりに%40を使用すると動作することを確認できます。特殊文字が機能しない場合は、URLエンコードを試してみてください。エンコーディングはここにあります:w3schools.com/tags/ref_urlencode.asp
Jon

133

これは、企業ファイアウォールの背後にあるWindows XPで機能しました。

http://code.google.com/p/msysgit/downloads/list?can=3からgit v1.771以外のローカルプロキシやその他のソフトウェアをインストールする必要はありませんでした

$ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
$ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
$ git remote add origin https://mygithubuser:mygithubpwd@github.com/repoUser/repoName.git
$ git push origin master

proxyuser =私のIT部門によって割り当てられたプロキシユーザー。私の場合は、自分のPCへのログインに使用しているのと同じWindowsユーザー、Active Directoryユーザーです。

proxypwd =プロキシユーザーのパスワード

proxy.server.com:8080 =プロキシ名とポート、コントロールパネル、インターネットオプション、接続、LAN設定ボタン、[プロキシサーバー]セクション内の[詳細設定]ボタンから取得し、最初の(http)行でサーバー名とポートを使用します。

mygithubuser = github.comへのログインに使用するユーザー

mygithubpwd = github.comユーザーのパスワード

repoUser =リポジトリのユーザー所有者

repoName =レポの名前


2
やったー、ありがとう!git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crt加えて、simplicidade.org / notes / archives / 2011/06 /…(thanks:stackoverflow.com/a/7206627/98528に記載されているようにダウンロードされた証明書)は私のためにそれを行いました!
akavel

3
私にとっては機能しているようですが、git://プロトコルを使用してリポジトリのクローンを作成するように依頼すると、gitはまだ機能しません。
Ajedi32

3
私のために機能したことに基づいて、パブロリックの情報をいくつか説明します:1)proxyuserがWindowsログインの場合は、ADドメインを除外し、ドメインなしのユーザー名のみを含めます。2)proxypwdのスペースは「+」としてエンコードする必要があります。たとえば、「My Password」は「My + Password」として入力する必要があります。
Simon Tewsi 2013年

2
@ EdmundYeung99:@記号を%40に置き換えることをお勧めします。試したことはありませんが、これは標準のURLエンコーディングです。
Simon Tewsi 2013

2
@demongolem:パスワードをURLエンコードする必要があるのではないかと思います(まだ試していません。これは単なる経験に基づく推測です)。次の回答の表のUrlEncoded列を参照してください:stackoverflow.com/a/11236038/216440 この場合、$を%24で置き換えることになります。
Simon Tewsi 2013

52

http_proxyという値で名前が付けられたシステム変数を設定しますProxyServer:Port。それが最も簡単な解決策です。それぞれ、https_proxy大府がコメントで指摘したように使用します。

(sleskeが言及しているように)gitproxyを設定することも別のオプションですが、これには「コマンド」が必要です。これは上記のソリューションほど簡単ではありません。

参照:http : //bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html


10
または、httpsリポジトリに接続している場合は「https_proxy」を使用します。
daefu

1
@daefu:https_proxyを設定する必要があるかどうかはわかりません。私はhttpsリポジトリに接続していて、pablolicの指示の最初のステップに従いました(つまり、git構成ファイルにhttp.proxyを追加します)。それは私のためにとったすべてだった。
Simon Tewsi 2013年

3
https_proxyが必要でした。http_proxyのみを設定すると、HTTPSリポジトリを複製できませんでした
explunit

@daefu +1これは未亡人のgithubでも動作します-関連する質問:stackoverflow.com/questions/16216176/…–
blue-sky

4
@SimonTewsi @explunit一方、環境変数の設定http_proxyは、HTTP URLおよびhttps_proxyHTTPS URLに必要です。または、all_proxyすべてのURLに設定することもできます。curl(1)のENVIRONMENTセクションを参照してください。ただし、git-configオプションの設定中は、HTTPとHTTPSの両方のURLに使用されます。git-config(1)を参照してください。http.proxyhttp.proxy
Susam Pal 2016

43

プロキシサーバーを構成するコマンドラインの方法が機能しない場合は、おそらく.gitconfigを編集して(プロファイルのルートで、C:\ Documents and Settingsと一部のネットワークドライブの両方で非表示になる可能性があります)、これを追加します:

[http]
    proxy = http://username:password@proxy.at.your.org:8080

YMMVでも、これはコマンドライン構成の最初のステップのみをカバーしています。システムのgit設定も編集する必要があるかもしれませんが、私は彼らがそれをどこに隠したかわかりません。


1
「システムのgit設定も編集する必要があるかもしれません。」いいえ、通常はありません。システムとユーザー設定が組み合わされています。2つのいずれかでプロキシを設定するだけで十分です。
sleske 2012年

私の場合、それは私のWindowsマシンの[git home] \ etc \ gitconfigにあります-編集後、それは魅力のように動作します!
Barmaley Red Star、2013

これは、特殊文字が原因でコマンドラインがパスワードを好まない場合に特に役立ちます。
Origin

37

を使用する代わりgit config --global http.proxy address:portに、コマンドラインでプロキシを設定できます。

git -c "http.proxy=address:port" clone https://...

利点は、プロキシが永続的に設定されないことです。Bashでエイリアスを設定できます:

alias git-proxy='git -c "http.proxy=address:port"'

22

ubuntuを使用している場合は、次の操作を行います...

手順1:corkscrewをインストールする

$ sudo apt-get install corkscrew

ステップ2:git-proxy.shという名前のスクリプトを記述し、以下を追加します

#!/bin/sh

exec corkscrew <name of proxy server> <port> $*

# <name_of_proxy_server> and <port> are the ip address and port of the server
# e.g. exec corkscrew 192.168.0.1 808 $*

ステップ3:スクリプトを実行可能にする

$ chmod +x git-proxy.sh

手順4:環境変数を設定してGITのプロキシコマンドを設定する

$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"

次のようなgitコマンドを使用します

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

"$@"代わりに使用する必要があり$*ます。詳細については、シェルのマニュアルを参照してください。
Hynek -Pichi- Vychodil 2017年

15

.gitconfigウィンドウ内に複数のファイルがあるため同じ問題に直面し、以下を同じ手順で修正しました:

ステップ1: Git BASHを開く

ステップ2:を探し.gitconfig、次のコマンドを実行します。

git config --list --global --show-origin

手順3:以下の内容をにコピーします.gitconfig

[http]
    proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
    sslverify = false
[https]
    proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
    sslverify = false
[url "http://github.com/"]
    insteadOf = git://github.com/

[user]
    name = Arpit Aggarwal
    email = aggarwalarpit.89@gmail.com

12

以下を〜/ .gitconfigファイルに追加してみてください:

[http]
    proxy = http://proxy:8080
[https]
    proxy = http://proxy:8080
[url "https://"]
    insteadOf = git://

1
私は上記のものをすべて試しました。ここにリストされているhttpsエントリーを追加するまで、私は作業することができませんでした。
ブレントフィッシャー

11

gitプロトコル(git:// ...)の場合、socatをインストールし、次のようなスクリプトを記述します。

#!/bin/sh

exec socat - socks4:your.company.com:$1:$2

それを実行可能にして、パスに入れ、~/.gitconfigセットcore.gitproxyにそのスクリプトの名前を入れます。


cygwinのSOCATを備えたWindowsでも動作します。使用socat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
davenpcj 2016

1
set GIT_PROXY_COMMAND=path\to\scriptGITにgit configをいじらずにプロキシを使用させるために使用できます。
davenpcj 2016

はい!最後に正しいヒント!私も認証が必要でした:exec socat STDIO PROXY:<proxy>:$ 1:$ 2、proxyport = <port>、proxyauth = <user>:<passwd>見つかりました:gist.github.com/sit/49288
Joachim

11

ここで私が気付いて共有したいことがあります:

git config --global http.proxy http://<proxy address>:<port number>

上記の方法は、ssh URL(つまり、git@github.com:<user name>/<project name>.git)では機能しません。

git clone git@github.com:<user name>/<project name>.git // will not use the http proxy

また、HTTPSポート(https://help.github.com/en/articles/using-ssh-over-the-https-port)でSSHを設定しても、ポート(デフォルトでは22)のみが変更されるため、変更はありません。)ssh接続が接続します。

(ネイティブスピーカーではありません。必要に応じて単語を修正してください)


7

私は私の研究を行なったし、これを見つけたので、私は、仕事(状態/ GOV)でのWindows XP上で動作し、ここで、それは私のために働きました。お役に立てれば :)

http_proxy環境変数

プロキシサーバーまたはファイアウォールを使用している場合、コマンドラインから一部のURLにアクセスするために、http_proxy環境変数を設定する必要がある場合があります。例:perlにppmをインストールするか、Linuxにrpmを適用して、ubuntuを更新する

http_proxy変数にプロキシサーバーのホスト名またはIPアドレスを設定します。http_proxy = http:// [proxy.example.org]

プロキシサーバーでユーザー名とパスワードが必要な場合は、次の形式でそれらを含めます。http_proxy = http:// [username:password@proxy.example.org]

プロキシサーバーが80以外のポートを使用する場合は、ポート番号を含めます。http_proxy= http:// [username:password@proxy.example.org:8080]

Windows XP

  1. コントロールパネルを開き、[システム]アイコンをクリックします。
  2. [詳細設定]タブで、[環境変数]をクリックします。
  3. [システム環境変数]パネルで[新規]をクリックします。
  4. http_proxyに適切なプロキシ情報を追加します(上記の例を参照)。

Linux、Solaris、またはHP-UX

シェルに固有のコマンド(たとえば、設定またはエクスポート)を使用して、http_proxy環境変数を設定します。この変更を永続的にするには、シェルの適切なプロファイルファイルにコマンドを追加します。たとえば、bashでは、次のような行を.bash_profileまたは.bashrcファイルに追加します。

  1. http_proxy = http:// [username:password @ hostname:port];
  2. $ http_proxyをエクスポート

tanx-> :) C:\ Users \ AT> echo%https_proxy%172.20.4.55:808
qasem

7

これらの回答に加えて、私は次の2つの点を検討するのに役立ちました。

認証スキームを強制する必要があるかもしれません:

[http]
    # https://github.com/git/git/blob/master/Documentation/config.txt
    proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm

また、通常、NTLM認証スキーマでは、ADドメインを明示的に提供する必要がある場合があります。

git bashでは:

echo %userdomain%

そして、それに応じてhttp.proxyを更新します。

git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080

とにかく、CURLログを追加することで調査を助けることができます:

export GIT_CURL_VERBOSE=1

を使用してproxyAuthMethodを追加する必要がありましたgit config --global http.proxyAuthMethod basic。この構成パラメーターを設定するまで、Git gersion 2.8.3は認証を送信しませんでした。
HeatfanJohn 2018

5

tsocksまたはproxychainsがインストールおよび構成されている場合、次のことができます。

$ tsocks git clone <you_repository>

または

$ proxychains git clone <you_repository>

それを短くするために、私は、シンボルリンク作成/usr/bin/pのためにproxychains、私はこのようにそれを使用することができますので、

p git clone <you_repository>

それを使ってあらゆるコマンドを代理することができます

p <cmd-need-be-proxied>

ちなみに、proxychainsは長い間更新されていません。proxychians-ngを試してみてください


4

端末にGitプロキシを設定する

もし

  • 各gitプロジェクトに手動でプロキシを1つずつ設定したくない
  • すべてのプロジェクトに常に同じプロキシを使用したい

一度グローバルに設定する

git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_url:proxy_port

プロキシを1つのgitプロジェクトのみに設定する場合(一部のgit接続で同じプロキシまたはプロキシをまったく使用したくない場合があります)

//go to project root
cd /bla_bla/project_root
//set proxy for both http and https
git config http.proxy username:password@proxy_url:proxy_port
git config https.proxy username:password@proxy_url:proxy_port

現在のプロキシ設定を表示する場合

git config --list 

プロキシをグローバルに削除する場合

git config --global --unset http.proxy
git config --global --unset https.proxy

1つのgitルートのみのプロキシを削除する場合

//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy

3

ここにプロキシ設定があります

git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>

3

ここで推奨された回答のほとんどをフォローしました。まず、次のエラーが発生しました:

致命的: ' https://github.com/folder/sample.git/ ' にアクセスできません:schannel:next InitializeSecurityContext failed:Unknown error(0x80092012)-失効関数は証明書の失効を確認できませんでした。

次に、@ Salim Hamidiが次のコマンドを試してみました

git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080

しかし、私は次のエラーを受け取りました:

致命的: ' https://github.com/folder/sample.git/ ' にアクセスできません:接続後にプロキシからHTTPコード407を受信しました

これは、プロキシサーバーがSSL証明書を確認できない場合に発生する可能性があります。したがって、ssl検証がオフになっていることを確認したいので(信頼されていないサイトにはお勧めしません)、@ Arpitで推奨されている次の手順を実行しましたが、少し変更しました。

1.まず、以前のプロキシ設定を必ず削除します。

git config --global --unset http.proxy

2.次に、gitconfigコンテンツをリストして取得します

git config --list --show-origin

3. gitconfigファイルの内容を次のように最後に更新します。

[http]
sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = schannel
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false
[https]
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false

3

プロキシパスワードのエンコードの問題があったため、上記のすべての回答を試しましたが、何もうまくいきませんでした。

このコマンドは機能しました:

git config --global http.proxy http://username@proxy.example.com:PortNumber 

コマンドにパスワードを入力しないでください。gitリポジトリに接続しようとすると、動的に要求されます。


ありがとう、これでうまくいきました。git設定はhttp.proxyである必要があります
ochhii

ユーザー名だけでは不十分です。パスワードも必要です。
Dinith、

このコードを使用してください{git config --global http.proxy proxyuser:proxypwd@proxy.server.com:8080 }
Dinith

2

Windowsユーザーの場合:機能するgit configset http_proxy=機能しない場合、この回答が役立つことがあります。

git://gitリポジトリのプロトコルをに置き換えますhttp://http_proxyとにかく、最初に設定する必要があることに注意してください。


0

このページのすべてのソリューションを精力的に試した後、私の回避策は代わりにSSHキーを使用することでした!

  1. Git Bashを開く
  2. $ ssh-keygen.exe -t rsa -C
  3. Gitプロバイダー(Github、Bitbucketなど)を開きます。
  4. id_rsa.pubファイルの内容をGitプロバイダーの入力ページに追加します(プロファイルを確認してください)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.