Git'in bir proxy sunucusuyla çalışmasını sağlamak - "İstek zaman aşımına uğradı" ile başarısız oluyor


918

Git'in proxy sunucu kullanmasını nasıl sağlayabilirim?

Git sunucusundan kodu kontrol etmek gerekiyor, ancak her zaman "İstek zaman aşımına uğradı" gösterir. Bunu nasıl çözebilirim?

Alternatif olarak, nasıl proxy sunucusu ayarlayabilirim?


Bu bir git istemci yapılandırma öğesi olmaz mı? Bunun cmd.exe'yi içerecek gibi görünen tek yönü git istemcisinin bir ortam değişkeninde bir proxy belirtmenize izin verebilmesidir.
Michael Burr

Bu sorun gitmeye özgü olduğu için tüm Windows referanslarını kaldırmak için orijinal soruyu düzenledim.
PlagueHammer

3
Not mümkün toon olacağını kurulum bir proxy başına git repo url!
VonC


3
Bu sorudaki cevapların çoğu HTTP proxy'leriyle ilgilidir. Eğer bir SOCKS vekil varsa, bkz bu soruyu HTTP / S için protokoller ve bu bir : // protokolünü Git için.
kullanıcı

Yanıtlar:


1634

Kullanmak için komut:

git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
  • proxyuservekil kullanıcı olarak değiştir
  • proxypwdproxy şifrenizle değiştirin
  • proxy.server.comproxy sunucunuzun URL'sine değiştirme
  • değiştirmek 8080için proxy sunucusu üzerinde yapılandırılmış vekil portuna

Bunun hem http hem de https depoları için çalıştığını unutmayın.

Herhangi bir zamanda bu proxy'yi sıfırlamaya ve proxy olmadan çalışmaya karar verirseniz:

Kullanmak için komut:

git config --global --unset http.proxy

Son olarak, ayarlı olan proxy'yi kontrol etmek için:

git config --global --get http.proxy

15
Teşekkürler Salim. Mine URL'de proxyuser: proxypwd olmadan çalıştı.
Kwex

11
Teşekkürler beyler. Benim için NTLM tabanlı kimlik doğrulaması yapıldı ve sadece .gitconfig dosyamın güncellenmesi işe yaramadı :(. Bu yüzden NTLM kimlik doğrulaması kullanan CNTLM almak zorunda kaldım. Güncelleme yöneticisi (yum, apt-get veya ssh gibi) yerel proxy'ye. klon gibi git işlemlerinde, http.proxy'yi yerel sunucuyla yerel olarak yapılandırılmış proxy'im olarak çekin.
Mayur Nagekar

9
Merhaba, "@" karakteri varsa proxypass'ı nasıl ayarlayabilirim? Ben bu karakteri scape gerekir biliyorum ama nasıl bilmiyorum .. Teşekkürler
patricK

13
@patricK Bunu kendim test etmedim, ancak kullanıcı adı / parola dizesi %40yerine kullanabilirsiniz @. Umarım yardımcı olur. :-)
Sourav Ghosh

14
@patricK @ works yerine% 40 kullanıldığını onaylayabilirim. Özel bir karakter çalışmıyorsa URL'yi kodlamayı denemelisiniz. Kodlamaları burada bulabilirsiniz: w3schools.com/tags/ref_urlencode.asp
Jon

133

Bu, şirket güvenlik duvarının arkasındaki Windows XP'de benim için çalıştı.

Http://code.google.com/p/msysgit/downloads/list?can=3 adresinden git v1.771 dışında herhangi bir yerel proxy veya başka bir yazılım yüklemem gerekmedi

$ 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 = BT departmanım tarafından atandığım proxy kullanıcı, benim durumumda, Active Directory kullanıcısı olan bilgisayarıma giriş yapmak için kullandığım aynı windows kullanıcısı

proxypwd = proxy kullanıcımın şifresi

proxy.server.com:8080 = proxy adı ve bağlantı noktası, Denetim Masası, Internet Seçenekleri, Bağlantılar, Lan Ayarları düğmesi, Proxy Sunucusu bölümündeki Gelişmiş düğmesi'nden aldım, ilk (http) satırındaki sunucu adını ve bağlantı noktasını kullanın .

mygithubuser = github.com'da oturum açmak için kullandığım kullanıcı

mygithubpwd = github.com kullanıcısı için şifre

repoUser = repo kullanıcı sahibi

repoName = repo adı


2
Yaşasın, teşekkürler! git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crtartı simplicidade.org/notes/archives/2011/06/… ' da açıklandığı gibi indirilen sertifikalar (teşekkürler: stackoverflow.com/a/7206627/98528 ) benim için yaptı!
akavel

3
Benim için çalışıyor gibi görünüyor, ancak git://protokolü kullanarak bir havuzu klonlamasını istediğimde git hala çalışmıyor .
Ajedi32

3
Benim için neyin işe yaradığına bağlı olarak pablolic'in bilgilerine birkaç açıklama: 1) Proxyuser bir Windows girişi ise, AD etki alanını dışarıda bırakın, sadece etki alanı olmadan kullanıcı adını ekleyin; 2) Proxypwd içindeki boşluklar "+" olarak kodlanmalıdır. örn. "Parolam", "+ Parolam" olarak girilmelidir.
Simon Tewsi

2
@ EdmundYeung99: @ simgesini% 40 ile değiştirmenizi öneririm. Denemedim ama standart URL kodlama olduğuna inanıyorum.
Simon Tewsi

2
@demongolem: Ben şifrenizi URL kodlamak gerekebilir şüpheli (denemedim, bu sadece eğitimli bir tahmin). Aşağıdaki yanıttaki tablodaki UrlEncoded sütununa bakın: stackoverflow.com/a/11236038/216440 Sizin durumunuzda bu, $ ile% 24'ü değiştirmek anlamına gelir.
Simon Tewsi

52

Adında bir sistem değişkeni Set http_proxydeğeriyle ProxyServer:Port. Bu en basit çözüm. Sırasıyla, https_proxydaefu olarak yorumlarda belirtildiği gibi kullanın .

Gitproxy'nin ayarlanması (belirtildiği gibi) başka bir seçenektir, ancak bu yukarıdaki çözüm kadar basit olmayan bir "komut" gerektirir.

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


10
Veya bir https deposuna bağlanıyorsanız 'https_proxy' kullanın.
daefu

1
@daefu: https_proxy ayarlamanız gerekip gerekmediğinden emin değilim. Ben bir https deposuna bağlı ve pablolic talimatları (yani git config dosyasına http.proxy ekleyerek) ilk adımını izledi. Benim için gereken buydu.
Simon Tewsi

3
https_proxy benim için gerekliydi. Yalnızca http_proxy ayarı, bir HTTPS
deposunu

@daefu +1 bu ayrıca dul github ile ilgili - ilgili soru: stackoverflow.com/questions/16216176/…
blue-sky

4
@SimonTewsi @explunit http_proxyHTTP URL'leri için ortam değişkenleri ayarlanırken ve https_proxyHTTPS URL'leri için gereklidir. Alternatif olarak, all_proxytüm URL'ler için ayar yapılabilir . Bkz. ENVIRONMENTBölüm (1) . Ancak git-config seçenekleri ayarlanırken, http.proxyhem HTTP hem de HTTPS URL'leri için kullanılır. Bkz http.proxy. Git-config (1) .
Susam Pal

43

Proxy sunucunuzu yapılandırmanın komut satırı yolu işe yaramazsa, büyük olasılıkla .gitconfig dosyasını düzenleyebilirsiniz (profilinizin kökünde, hem C: \ Documents and Settings'de hem de bazı ağ sürücüsünde gizlenebilir) ve bunu ekleyebilirsiniz :

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

YMMV olsa da, bu sadece komut satırı yapılandırmasının ilk adımını kapsar. Sistem git yapılandırmasını da düzenlemeniz gerekebilir ve bunu nerede sakladıkları hakkında hiçbir fikrim yok.


1
Msgstr "Sistem git yapılandırmasını da düzenlemeniz gerekebilir". Hayır, genellikle değil. Sistem ve kullanıcı yapılandırması birleştirilir; ikisinden birinde proxy ayarlamak yeterli olmalıdır.
sleske

Benim durumumda [git home] \ etc \ gitconfig içinde Windows makinemde bulunuyor - düzenledikten sonra bir cazibe gibi çalışıyor!
Barmaley Kızıl Yıldız

Bu, özellikle komut satırı özel karakterler nedeniyle şifrenizi beğenmiyorsa yararlıdır.
Menşei

37

Kullanıma alternatif olarak git config --global http.proxy address:port, proxy'yi komut satırında ayarlayabilirsiniz:

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

Avantajı, proxy'nin kalıcı olarak ayarlanmamış olmasıdır. Bash altında bir takma ad belirleyebilirsiniz:

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

22

Ubuntu kullanıyorsanız, aşağıdakileri yapın ...

Adım 1: Tirbuşon takın

$ sudo apt-get install corkscrew

Adım 2: git-proxy.sh adlı bir komut dosyası yazın ve aşağıdakileri ekleyin

#!/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. Adım: Betiği yürütülebilir yapın

$ chmod +x git-proxy.sh

Adım 4: Ortam değişkenini ayarlayarak GIT için proxy komutunu ayarlayın

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

Şimdi git komutlarını kullanın.

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

Muhtemelen "$@"yerine kullanmalısınız $*. Daha fazla ayrıntı için kabuk kılavuzunuza bakın.
Hynek -Pichi- Vychodil

15

.gitconfigWindows'daki birden fazla dosya nedeniyle aynı sorunla karşı karşıya kaldı, sorunu gidermek için aşağıdaki adımları izleyin:

Adım 1: Git BASH'ı açın

Adım 2:.gitconfig Aşağıdaki komutu uygulayarak arayın :

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

3. Adım: Aşağıdaki içeriği şuraya kopyalayın .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 dosyasına aşağıdakileri koymayı deneyin:

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

1
Yukarıdaki her şeyi denedim. Burada listelenen https girişini ekleyene kadar çalışabildim.
Brent Fisher

11

Git protokolü için (git: // ...), socat'ı yükleyin ve aşağıdaki gibi bir komut dosyası yazın:

#!/bin/sh

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

, çalıştırılabilir hale yolunuzda koyun ve içinde ~/.gitconfigsette core.gitproxyo script adının.


Cygwin's SOCAT'li pencerelerde de çalışır. kullanmasocat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
davenpcj

1
Kullanabilir miyim set GIT_PROXY_COMMAND=path\to\scriptGIT git yapılandırma ile karıştırmasını olmadan proxy kullanacak yapmak.
davenpcj

Evet! Sonunda doğru ipucu! Ayrıca kimlik doğrulamasına ihtiyacım vardı: exec socat STDIO PROXY: <proxy>: 1 $: 2 $, proxyport = <port>, proxyauth = <user>: <passwd> Burada bulundu: gist.github.com/sit/49288
Joachim

11

Burada fark ettiğim ve paylaşmak istediğim bir şey var:

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

Yukarıdaki yöntem ssh URL'leri için kullanılamaz (ör. git@github.com:<user name>/<project name>.git):

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

HTHPS bağlantı noktası ( https://help.github.com/en/articles/using-ssh-over-the-https-port ) üzerinden SSH ayarlarsak işler değişmez, çünkü yalnızca bağlantı noktasını değiştirir (varsayılan olarak 22 ) ssh bağlantısı bağlanır.

(Anadili İngilizce değil, lütfen gerekirse kelimelerimi geliştirin)


7

İş yerinde Windows XP üzerinde çalışıyorum (state / gov), bu yüzden araştırmamı yaptım ve burada buldum ve benim için çalıştı. Bu yardımcı olur umarım :)

Http_proxy Ortam Değişkeni

Bir proxy sunucu veya güvenlik duvarı kullanıyorsanız, komut satırından bazı URL'lere erişmek için http_proxy ortam değişkenini ayarlamanız gerekebilir. Örnek: Perl için ppm yükleme veya Linux'ta rpm uygulama, ubuntu'yu güncelleme

Http_proxy değişkenini proxy sunucusunun ana bilgisayar adı veya IP adresiyle ayarlayın: http_proxy = http: // [proxy.example.org]

Proxy sunucusu bir kullanıcı adı ve parola gerektiriyorsa, bunları aşağıdaki forma ekleyin: http_proxy = http: // [kullanıcı adı: password@proxy.example.org]

Proxy sunucusu 80 dışında bir bağlantı noktası kullanıyorsa, bağlantı noktası numarasını ekleyin: http_proxy = http: // [kullanıcı adı: password@proxy.example.org: 8080]

Windows XP

  1. Denetim Masası'nı açın ve Sistem simgesini tıklayın.
  2. Gelişmiş sekmesinde, Ortam Değişkenleri'ni tıklatın.
  3. Sistem değişkenleri panelinde Yeni'yi tıklatın.
  4. Uygun proxy bilgileriyle http_proxy ekleyin (yukarıdaki örneklere bakın).

Linux, Solaris veya HP-UX

Kabuğunuza özgü komutu kullanarak http_proxy ortam değişkenini ayarlayın (örn. Ayarlama veya dışa aktarma). Bu değişikliği kalıcı yapmak için, komutu kabuk için uygun profil dosyasına ekleyin. Örneğin, bash içinde .bash_profile veya .bashrc dosyanıza aşağıdakine benzer bir satır ekleyin:

  1. http_proxy = http: // [kullanıcı adı: şifre @ hostname: port];
  2. dışa aktarma http_proxy

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

7

Bu cevaplara ek olarak, bu 2 noktayı dikkate almak için yararlı buldum:

Bir kişinin bir kimlik doğrulama şemasının uygulanması gerekebilir:

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

Ayrıca, tipik olarak NTLM kimlik doğrulama şemasında, kişinin açıkça AD etki alanı sağlaması gerekebilir.

Git bash'ta:

echo %userdomain%

Ve http.proxy dosyasını buna göre güncelleyin:

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

Her neyse, araştırma CURL günlükleri eklenerek yardımcı olabilir:

export GIT_CURL_VERBOSE=1

Kullanarak proxyAuthMethod eklemek gerekiyordu git config --global http.proxyAuthMethod basic. Bu yapılandırma parametresini ayarlayana kadar Git gersion 2.8.3 hiçbir kimlik doğrulaması göndermedi.
HeatfanJohn

5

Eğer varsa tsocks veya proxychains yüklü ve yapılandırılmış yapabilirsiniz

$ tsocks git clone <you_repository>

veya

$ proxychains git clone <you_repository>

kısaltmak /usr/bin/piçin bir sembol bağlantısı oluşturdum proxychains, bu şekilde kullanabilirim

p git clone <you_repository>

ve herhangi bir komutu vekil olarak kullanabilirim,

p <cmd-need-be-proxied>

bu arada, proxychains uzun bir süre güncellenmez, proxychians-ng denemek isteyebilirsiniz


4

Terminalde git proxy'yi ayarlama

Eğer

  • git projelerinizin her biri için tek tek proxy ayarlamak istemezsiniz
  • her zaman tüm projeleriniz için aynı proxy'yi kullanmak istiyorum

Global olarak bir kez ayarlayın

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

yalnızca bir git projesi için proxy ayarlamak istiyorsanız (bazı git bağlantıları için aynı proxy'yi veya herhangi bir proxy'yi kullanmak istemeyebileceğiniz bazı durumlar olabilir)

//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

geçerli proxy ayarlarını görüntülemek istiyorsanız

git config --list 

global olarak proxy’yi kaldırmak istiyorsanız

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

Proxy'yi yalnızca bir git root için kaldırmak istiyorsanız

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

3

işte proxy ayarı

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

3

Burada önerilen cevapların çoğunu takip ettim. İlk önce aşağıdaki hatayı aldım:

ölümcül: ' https://github.com/folder/sample.git/ ': schannel: next InitializeSecurityContext başarısız oldu: Bilinmeyen hata (0x80092012) - İptal işlevi, sertifikanın iptalini kontrol edemedi.

Sonra @Salim Hamidi tarafından aşağıdaki komutu denedim

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

Ama şu hatayı aldım:

ölümcül: ' https://github.com/folder/sample.git/ ' adresine erişilemiyor : CONNECT sonrasında proxy'den 407 HTTP kodu alındı

Proxy sunucusu SSL sertifikasını doğrulayamazsa bu olabilir. Bu yüzden ssl doğrulamasının kapalı olduğundan emin olmak istiyoruz (güvenilir olmayan siteler için önerilmez), bu yüzden @Arpit tarafından önerilen ancak küçük değişikliklerle aşağıdaki adımları uyguladım:

1.İlk önce önceki proxy ayarlarını kaldırdığınızdan emin olun:

git config --global --unset http.proxy

Daha sonra gitconfig içeriğini listeleyin ve alın

git config --list --show-origin

Gitconfig dosyasının içeriğini aşağıdaki gibi güncelleyin:

[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

Yukarıdaki tüm cevapları denedim ve sorunları bir proxy şifre kodlama olduğu için hiçbir şey benim için çalıştı.

Bu komut çalıştı:

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

Komutunuza şifreyi girmeyin. Herhangi bir git deposuna bağlanmaya çalıştığınızda dinamik olarak sorulur.


Teşekkürler, bu benim için çalıştı. Git yapılandırma ayarı http.proxy
ochhii

şifre de gereklidir.
Dinith

bu kodu kullanın {git config --global http.proxy proxyuser: proxypwd@proxy.server.com: 8080 }
Dinith

2

Windows kullanıcıları için: eğer çalışıyorsa git configveya set http_proxy=çalışmıyorsa, bu cevap yardımcı olabilir:

git://git deposunun protokolünü ile değiştirin http://. Her http_proxyneyse , ilkini ayarlamanız gerekeceğini unutmayın .


0

Yorulmadan bu sayfadaki her çözümü denedikten sonra, benim işim yerine SSH anahtarı kullanmak oldu!

  1. Git Bash'i aç
  2. $ ssh-keygen.exe -t rsa -C
  3. Git sağlayıcınızı açın (Github, Bitbucket, vb.)
  4. İd_rsa.pub dosya içeriklerini Git sağlayıcısının giriş sayfasına kopyalayın (profilinizi kontrol edin)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.