Pierwszy problem nie jest tak naprawdę związany z git - bardziej jest to konieczne, aby móc faktycznie skonfigurować proxy.
Konfigurację proxy na komputerze z systemem Windows można znaleźć w Panelu sterowania -> Opcje internetowe -> Połączenia -> Ustawienia sieci LAN.
Jeśli zaznaczone jest "Użyj automatycznego skryptu konfiguracyjnego", najpierw musisz pobrać określony plik i go otworzyć. Mam plik zawierający mały skrypt. Wyglądało to mniej więcej tak:
function FindProxyForURL(url, host)
{
var myip = myIpAddress();
var hostip = dnsResolve(host);
if (isInNet(hostip,"192.168.0.0","255.255.0.0"))
return "DIRECT";
if (isInNet(hostip,"xyz.abc.0.0","255.255.0.0"))
return PROXY special-proxy:8080;
return "PROXY default-proxy:8080";
}
Tak, w moim przypadku, pełnomocnik do użytku był default-proxy:8080
.
Aby faktycznie dostać git używać proxy, musiałem użyć git config --global http.proxy http://<domain>\<username>:<password>@default-proxy:8080
.
Oczywistym minusem jest to, że hasło do domeny będzie przechowywane jako zwykły tekst na dysku twardym.
Inne ustawienia nie działają, chociaż różne źródła twierdzą, że powinny. Były to:
- Ustawianie zmiennych środowiskowych
https_proxy
lub http_proxy
do http://<domain>\<username>:<password>@default-proxy:8080
- Ustawianie globalnego git config do tej wartości:
git config --global https.proxy http://<domain>\<username>:<password>@default-proxy:8080
- Ustawienie zmiennej środowiskowej
http_proxy
do http://<domain>\<username>:<password>@default-proxy:8080
Aby dostać wokół trzeciego wydania najprostszą możliwością jest zignorowanie błędów certyfikatu poprzez ustawienie zmiennej środowiskowej - certyfikatów zwracane przez pełnomocnika nie są nic warte i tak:
set GIT_SSL_NO_VERIFY=true
Aby nie przechowuje hasła w postaci zwykłego git config, można korzystać z lokalnego serwera proxy zamiast, na przykład cntlm.
Pozwala to na zachowanie skrótu hasła. Aby uzyskać skrót, użyj polecenia:
cntlm.exe -H -d <domain> -u <username>
Po tym czasie zostaniesz poproszony o podanie hasła. Wynikiem będzie lista trzech skrótów, z których najprawdopodobniej jest odpowiedni w tym scenariuszu. Zamień linię Password
w pliku cntlm.ini na linię z wyjścia, w tym część PassNTLMv2
.
Oczywiście należy skonfigurować git, aby zamiast tego używać lokalnego serwera proxy.
+1, dzięki za udostępnienie! – CharlesB
Dziękujemy, to jedyne rozwiązanie, które zadziałało! Nie wiedziałem, że skrypt automatycznej konfiguracji zostanie pobrany jako plik. Jedna rzecz, o której powinienem wspomnieć - jeśli znak skrótu (#) pojawi się w dowolnym miejscu w: to nie zadziała, ponieważ git zinterpretuje wszystko obok niej jako komentarz. –
Boris