Próbuję uruchomić klienta GitHub dla systemu Windows. Jestem na firmowym komputerze z systemem Windows 7 x64 za firmowym serwerem proxy i zaporą. Śledząc różne inne posty i eksperymentując z wieloma kombinacjami zmiennych środowiskowych i zmiennych konfiguracyjnych, odkryłem, że jedynym sposobem, aby klonowanie i wypychanie aktualizacji działało, jest użycie zmiennej środowiskowej HTTPS_PROXY, w tym mojego pełnego identyfikatora użytkownika i hasła domeny firmowej.
Jest to niedopuszczalne z punktu widzenia bezpieczeństwa. Czy jest jakiś inny sposób, aby to zadziałało?
Dodatkowe uwagi:
Następujące działały:
- Dodaj zmienną środowiskową wywoływaną
HTTPS_PROXY
z wartościąhttp://[domain]\[userid]:[password]@someproxy.mycorp.com:8080
Nie udało się :
- Pomijanie identyfikatora użytkownika i hasła w
HTTPS_PROXY
zmiennej - Używanie zmiennej środowiskowej o nazwie
HTTP_PROXY
(nieS
) - Dodanie
http.proxy
zmiennej do globalnego pliku konfiguracyjnego (.gitconfig
) - Dodanie
https.proxy
zmiennej do globalnego pliku konfiguracyjnego
We wszystkich przypadkach klient GitHub nadal nie rozpoznaje serwera proxy: Zawartość pliku TheLog.txt
zawsze zawiera następujące informacje podczas uruchamiania:
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy
Po nim następuje kilka nieudanych prób uwierzytelnienia serwera proxy, z których wszystkie wskazują „Brak poświadczeń”.
źródło
Odpowiedzi:
Dodaj te wpisy do pliku „.gitconfig” w katalogu użytkownika (przejdź do% USERPROFILE%):
A jeśli nie chcesz przechowywać hasła w postaci zwykłego tekstu, użyłbym lokalnego przekazującego proxy, takiego jak CNTLM, który umożliwia kierowanie całego ruchu przez niego i może przechowywać zaszyfrowane hasła.
W przeciwieństwie do pierwotnego pytania, jeśli nie obchodzi Cię, czy hasło jest w postaci zwykłego tekstu, dodaj następujące:
źródło
127.0.0.1
zamiastlocalhost
, jak sugerowano. W systemie Windows wydaje się, że localhost wskazuje najpierw adres IPv6, którego CNTLM nie nasłuchuje. W związku z tym git będzie czekał do upływu limitu czasu (kilka minut) przed przełączeniem na adres IPv4.Wypróbowałem wszystko powyżej - i nie udało mi się, jedyną rzeczą, która mi pomogła, jest CNTLM - http://cntlm.sourceforge.net/ .
Zainstaluj go i uruchom cntlm -H, następnie uwierzytelnij się w korporacyjnym proxy, edytuj plik cntlm.ini z wyjściem cntlm, zrestartuj usługę Windows. Zaktualizuj plik .gitconfig za pomocą:
Teraz cntlm wykona całe uwierzytelnienie, a będziesz mógł korzystać z GitHub (i Dropbox, btw) za korporacyjnym proxy. Przynajmniej do kolejnej zmiany hasła :) (potem znowu cntlm -H)
źródło
Udało mi się zmusić GitHub Shell do współpracy z naszym korporacyjnym proxy. Uruchamiam GitHub Shell i wykonuję następujące polecenie:
Naprawdę chciałbym, aby GUI też działało. Ale nie chcę ustawiać globalnej zmiennej środowiskowej systemu Windows, która zawiera moje firmowe dane uwierzytelniające.
O dziwo klient GitHub GUI jest w stanie połączyć się z GitHubem w celu uwierzytelnienia użytkownika, ale jedynym problemem jest klonowanie, ściąganie i wypychanie projektów zi do GitHub. Wygląda na to, że problem tkwi w implementacji gita. Udało mi się skonfigurować git, aby działał przez nasz serwer proxy bez umieszczania moich poświadczeń w ustawieniach globalnych git i pytał o moje poświadczenia podczas wykonywania żądań ściągania lub wypychania. Ale to działało tylko w Git Shell.
źródło
Jeśli używasz GitHub dla Windows w firmie, istnieje duże prawdopodobieństwo, że stoisz za wielką, złą korporacyjną zaporą ogniową / serwerem proxy. GitHub dla systemu Windows nie ma jeszcze parametrów proxy w swoim GUI do ustawiania opcji.
Aby skonfigurować usługę GitHub dla systemu Windows do korzystania z firmowego serwera proxy, edytuj plik .gitconfig, który zwykle znajduje się w C: \ Users \ .gitconfig lub C: \ Documents & Settings \ .gitconfig
Zamknij GitHub dla Windows; W .gitconfig po prostu dodaj
[https] proxy = proxy.twojafirma.com:port
źródło
Natknąłem się również na ten problem i również próbowałem go trochę zagłębić (zdemontowałem klienta).
Fragment kodu, który generuje komunikaty dziennika, które widzimy, wygląda następująco:
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); } }
Więc ten blok rejestruje tylko informacje o serwerze proxy skonfigurowane w IE . Wydaje się, że komunikat dziennika nie ma wpływu na to, co ustawiliśmy w plikach konfiguracyjnych lub zmiennych środowiskowych.
źródło
Nie wiem o twojej zaporze, ale mój kampus używa proxy
czy używasz jakiegoś git gui? EDYTOWAĆ : właśnie zauważyłem, że używasz klienta github dla Windows
używam Tortoisegit i bardzo łatwo jest ustawić proxy. Kliknij prawym przyciskiem myszy w dowolnym miejscu, tortoisegit> sieć, włącz serwer proxy i ustaw adres serwera, nazwę użytkownika i hasło. Gotowe
O ile pamiętam, tortoisegit będzie również działał po wyjęciu z pudełka z githubem.
źródło
Oto sposób na ustawienie proxy w githubie
Tutaj w mojej uczelni nie mamy nazwy użytkownika i hasła, więc jeśli nasz adres IP uczelni to 172.16.10.10, a port to 8080
PS -> Zalecałbym użycie tej metody do ustawienia proxy, ponieważ wszystko będzie dobrze, gdy dowiesz się więcej o
źródle
źródło
Ten blog okazał się przydatny. Opisuje proxy ntlmaps . Prawdopodobnie jest mniej bezpieczny, ale działał płynnie. Nie mogłem uruchomić cntlm.
źródło
Dla nas rozwiązanie obejmowało dwie różne rzeczy. Najpierw, jak opisano w odpowiedzi Soggera, musisz dodać wpisy do swojego
.gitconfig
pliku, znajdującego się w%USERPROFILE%
.Po drugie (i to był dla nas brakujący element), musisz skonfigurować wyjątek na serwerze proxy, aby zezwolić nieuwierzytelnionemu ruchowi proxy na
*.github.com
W iPrism wygląda to tak:
Problemem jest nie tyle proxy, co uwierzytelnianie . Pomijanie wymogu uwierzytelniania umożliwia niezbędną komunikację do klonowania i pracy z projektami przy użyciu klienta pulpitu GitHub.
Należy również zauważyć, że to podejście nie wymagało przechowywania poświadczeń proxy w
.gitconfig
pliku.źródło