Proxy arkasında GitHub Windows istemcisi


93

Windows için GitHub istemcisini çalıştırmaya çalışıyorum. Kurumsal bir proxy ve güvenlik duvarının arkasında kurumsal bir Win 7 x64 bilgisayarındayım. Çeşitli diğer gönderileri takip etmek ve ortam değişkenlerinin ve yapılandırma değişkenlerinin birden çok kombinasyonunu denemek Klonlamanın ve güncellemeleri çalıştırmanın tek yolunun, tam kurumsal etki alanı kullanıcı kimliğim ve parolam dahil olmak üzere HTTPS_PROXY ortam değişkenini kullanmak olduğunu buldum.

Bu, güvenlik açısından kabul edilemez. Bunu çalıştırmanın başka bir yolu var mı?

Ek Notlar:

Aşağıdakiler işe yaradı:

  • HTTPS_PROXYDeğeri olan bir ortam değişkeni ekleyinhttp://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

Aşağıdaki vermedi değil çalışır:

  • HTTPS_PROXYDeğişkenden kullanıcı kimliği ve şifresi çıkarılıyor
  • HTTP_PROXY(Hayır S) adlı bir ortam değişkeni kullanma
  • http.proxyDeğişkeni genel yapılandırma dosyasına ( .gitconfig) ekleme
  • https.proxyDeğişkeni global yapılandırma dosyasına ekleme

Her durumda, GitHub istemcisi hala proxy'yi tanımıyor: Dosyanın içeriği TheLog.txt her zaman başlangıçta aşağıdakileri gösterir:

[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy

Bunu, tümü "Kimlik bilgileri eksik" olarak gösteren birkaç başarısız proxy kimlik doğrulama girişiminin çıktısı izler.


2
Ortam değişkenini eklemek benim için hile yaptı, ancak etki alanımı / parolamı ortam değişkenlerine erişimi olan herhangi bir uygulamaya gösterdiği için kabul edilemez bir çözüm.
Fabricio

jacobbenson.com/ ? msysgit, Windows proxy ayarlarını kullanmayan http istekleri için libcurl kullanır. Github.com/libgit2/libgit2sharp adresindeki libgit2sharp dahil olmak üzere birçok alanda bunu düzeltmek için devam eden çalışmalar var .
Andrew Hill

Yanıtlar:


131

Bu girişleri kullanıcı dizininizdeki '.gitconfig' dosyanıza ekleyin (% USERPROFILE% gidin):

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

Parolanızı düz metin olarak saklamak istemiyorsanız, CNTLM gibi yerel bir proxy iletici kullanırım, bu da tüm trafiği üzerinden yönlendirmenize izin verir ve şifreleri karma olarak saklayabilir.


Orijinal sorunun aksine, şifrenizin düz metin olması umurunuzda değilse şunları ekleyin:

[http]
    proxy = http://<username>:<password>@<proxy address>:<proxy port>

[https]
    proxy = https://<username>:<password>@<proxy address>:<proxy port>

proxy'ye karşı yetkilendirmeye ihtiyacınız varsa edufinn cevabına bakın: proxy = http: // <kullanıcı adı>: <şifre> @ <kurumsal proxy>: <port>
Jan Hommes

1
@JanHommes Asıl soru özellikle şifreyi düz metin olarak saklamadan nasıl yapılacağını soruyordu
Sogger

@Sogger Şifremde "@" karakteri varsa, şifreyi nasıl yapılandırmalıyım, yardımın için teşekkürler.
kıyı şeridi


4
CNTLM kullanıyorsanız , önerildiği gibi 127.0.0.1yerine proxy'yi işaret ettiğinizden emin olun localhost. Windows'ta, localhost'un ilk olarak CNTLM'nin dinlemediği IPv6 adresini işaret ettiği görülmektedir. Bu nedenle git, IPv4 adresine geçmeden önce zaman aşımına (birkaç dakika) kadar bekler.
Ronan Paixão

14

Yukarıdaki her şeyi denedim ve başarılı olamadım, bana yardımcı olan tek şey CNTLM oldu - http://cntlm.sourceforge.net/ .

Kurun ve cntlm -H komutunu çalıştırın, corp proxy'sine kimlik doğrulaması yapın, cntlm.ini dosyasını cntlm çıktısı ile düzenleyin, Windows hizmetini yeniden başlatın. .Gitconfig'i şununla güncelleyin:

[https] proxy = localhost:3128
[http] proxy = localhost:3128

Şimdi cntlm tüm kimlik doğrulamasını yapacak ve şirket proxy'sinin arkasında GitHub (ve Dropbox, btw) kullanabileceksiniz. En azından bir sonraki şifre değişikliğine kadar :) (tekrar cntlm -H şeyler yapmaktan)


2
Git klonlama, getirme veya çekme gibi uzak eylemlerin tamamlanması çok uzun sürerse, .gitconfig'i şu şekilde değiştirmeyi deneyin: [https] proxy = 127.0.0.1:3128 [http] proxy = 127.0.0.1:3128
jhamm

hangi Windows hizmetini yeniden başlat?
Mukus

@Mukus cntlm - doğru hatırlıyorsam kurulumdan sonra servis modunda çalışıyor.
Anton

Değişikliği yaptım, yeniden başlattım ve hala çalışmıyor.
Mukus

8

GitHub Shell'in kurumsal proxy'mizle çalışmasını sağlayabildim. GitHub Shell'i başlatıyorum ve aşağıdaki komutu çalıştırıyorum:

export http_proxy=http://<username>:<password>@<corporate proxy>:3128

GUI'nin de çalışmasını gerçekten çok isterim. Ancak kurumsal kimlik bilgilerimi içeren Windows genel ortam değişkenini ayarlamak istemiyorum.

Garip bir şekilde GitHub GUI İstemcisi, kullanıcı kimlik doğrulaması için GitHub'a bağlanabilir, ancak tek sorun projeleri GitHub'dan klonlama, çekme ve itme ile ilgilidir. Görünüşe göre sorun git uygulamasında. Git'i, kimlik bilgilerimi git global ayarlarına koymadan proxy'miz üzerinden çalıştıracak şekilde yapılandırabildim ve çekme veya itme isteklerini gerçekleştirirken kimlik bilgilerimi istiyordu. Ancak bu yalnızca Git Shell'de çalışıyordu.


Bunun nedeni, muhtemelen GitHub'ın işletim sisteminden proxy bilgilerini çeken bazı bileşenlerle, muhtemelen bir SingleSignOn çözümüyle dahili olarak kimlik doğrulaması yaparken git'in kendisi yapmadığı içindir. SourceTree ile aynı sorunu yaşıyorum. Ayrıca git çalıştığında, çalışmanın inanılmaz derecede uzun sürdüğünü ve SourceTree kullanımını imkansız hale getirdiğini buldum.
Ronan Paixão

Bunun nedeni büyük olasılıkla Github'ın BT çalışanlarının görmesi için yaygın olmadığı için filtrelenen git bağlantı noktasını kullanmaya çalışmasıdır. Bir alternatif için cevabıma bakın.
dragon788

7

Bir şirkette Windows için GitHub kullanıyorsanız, büyük ve kötü bir Kurumsal Güvenlik Duvarı / Proxy'nin arkasında olma ihtimaliniz yüksektir. Windows için GitHub, Seçenekleri ayarlamak için GUI'sinde henüz proxy parametrelerine sahip değil.

Windows için GitHub'ı kurumsal proxy'nizi kullanacak şekilde yapılandırmak için, genellikle C: \ Users \ .gitconfig veya C: \ Documents & Settings \ .gitconfig konumunda bulunan .gitconfig dosyasını düzenleyin.

Windows için GitHub'ı kapatın; .Gitconfig dosyasında şunu ekleyin:

[https] proxy = proxy.sirketiniz.com:port


4

Ayrıca bu sorunla karşılaştım ve biraz da araştırmaya çalıştım (müşteriyi parçalarına ayırdım).

Gördüğümüz günlük mesajlarını oluşturan kod parçası aşağıdaki gibidir:

private static void LogProxyServerConfiguration()
{
    WebProxy defaultProxy = WebProxy.GetDefaultProxy();
    string str = defaultProxy.Address != (Uri)null ? defaultProxy.Address.ToString() : "(None)";
    StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy information: {0}", str);
    try
    {
        if (defaultProxy.Credentials == null)
        {
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Couldn't fetch creds for proxy", new object[0]);
        }
        else
        {
            NetworkCredential credential = defaultProxy.Credentials.GetCredential(GitHubClient.GitHubDotComUri, "Basic");
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy is authenticated: {0}", credential != null && !string.IsNullOrWhiteSpace(credential.UserName));
        }
    }
    catch (Exception ex)
    {
        StartupLogger.log.InfoException("Couldn't fetch creds for proxy", ex);
    }
}

Bu nedenle, bu blok yalnızca IE'de ayarlanan proxy bilgilerini günlüğe kaydeder . Günlük mesajının yapılandırma dosyalarında veya çevresel değişkenlerde ne kurduğumuzla hiçbir ilgisi yok gibi görünüyor.


3

Güvenlik duvarınızı bilmiyorum ama kampüsüm proxy kullanıyor

git gui kullanıyor musun? DÜZENLE : Windows için github istemcisi kullandığınızı fark ettim

kaplumbağa kullanıyorum ve proxy'yi ayarlamak çok kolay. Herhangi bir yere sağ tıklayın, tortoisegit> ağ, proxy sunucusunu etkinleştirin ve sunucu adresini, kullanıcı adını ve şifreyi ayarlayın. bitti

hatırladığım kadarıyla tortoisegit de kullanıma hazır github ile çalışacak.


2

İşte github'da proxy ayarlamanın yolu

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

Benim üniversitemde kullanıcı adımız ve şifremiz yok, bu yüzden üniversite ipimiz 172.16.10.10 ve bağlantı noktası 8080 ise

git config --global http.proxy http://172.16.10.10:8080
git config --global https.proxy http://172.16.10.10:8080

Not -> Daha fazla bilgi edindikçe işler yerine oturacağından proxy'yi ayarlamak için bu yöntemi kullanmanızı tavsiye ederim
Kaynak



1

Bizim için çözüm iki farklı şeyi içeriyordu. İlk olarak, Sogger'ın cevabında açıklandığı gibi, girişleri .gitconfigdosyanıza eklemeniz gerekir %USERPROFILE%.

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

İkincisi, (ve bu bizim için eksik parçaydı), kimliği doğrulanmamış proxy trafiğine izin vermek için proxy sunucusunda bir istisna yapılandırmanız gerekir .*.github.com

İPrism'de şöyle görünür: görüntü açıklamasını buraya girin

Sorun o kadar çok proxy değil, kimlik doğrulama . Kimlik doğrulama gereksinimini atlamak, gerekli iletişimin GitHub masaüstü istemcisini kullanarak projelerle klonlanmasına ve çalışmasına olanak tanır.

Ayrıca bu yaklaşım olduğuna dikkat vekil kimlik bilgilerini depolamak gerektirmeyen içinde .gitconfigdosyanın.

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.