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?
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?
Yanıtlar:
Kullanmak için komut:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
proxyuser
vekil kullanıcı olarak değiştirproxypwd
proxy şifrenizle değiştirinproxy.server.com
proxy sunucunuzun URL'sine değiştirme8080
için proxy sunucusu üzerinde yapılandırılmış vekil portunaBunun 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
%40
yerine kullanabilirsiniz @
. Umarım yardımcı olur. :-)
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ı
git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crt
artı simplicidade.org/notes/archives/2011/06/… ' da açıklandığı gibi indirilen sertifikalar (teşekkürler: stackoverflow.com/a/7206627/98528 ) benim için yaptı!
git://
protokolü kullanarak bir havuzu klonlamasını istediğimde git hala çalışmıyor .
Adında bir sistem değişkeni Set http_proxy
değeriyle ProxyServer:Port
. Bu en basit çözüm. Sırasıyla, https_proxy
daefu 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
http_proxy
HTTP URL'leri için ortam değişkenleri ayarlanırken ve https_proxy
HTTPS URL'leri için gereklidir. Alternatif olarak, all_proxy
tüm URL'ler için ayar yapılabilir . Bkz. ENVIRONMENT
Bölüm (1) . Ancak git-config seçenekleri ayarlanırken, http.proxy
hem HTTP hem de HTTPS URL'leri için kullanılır. Bkz http.proxy
. Git-config (1) .
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.
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"'
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
"$@"
yerine kullanmalısınız $*
. Daha fazla ayrıntı için kabuk kılavuzunuza bakın.
.gitconfig
Windows'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
~ / .Gitconfig dosyasına aşağıdakileri koymayı deneyin:
[http]
proxy = http://proxy:8080
[https]
proxy = http://proxy:8080
[url "https://"]
insteadOf = git://
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 ~/.gitconfig
sette core.gitproxy
o script adının.
socat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
set GIT_PROXY_COMMAND=path\to\script
GIT git yapılandırma ile karıştırmasını olmadan proxy kullanacak yapmak.
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)
İş 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
- Denetim Masası'nı açın ve Sistem simgesini tıklayın.
- Gelişmiş sekmesinde, Ortam Değişkenleri'ni tıklatın.
- Sistem değişkenleri panelinde Yeni'yi tıklatın.
- 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:
- http_proxy = http: // [kullanıcı adı: şifre @ hostname: port];
- dışa aktarma http_proxy
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
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.
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/p
iç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
Terminalde git proxy'yi ayarlama
Eğer
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
işte proxy ayarı
git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>
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
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.
Yorulmadan bu sayfadaki her çözümü denedikten sonra, benim işim yerine SSH anahtarı kullanmak oldu!