2014-04-02 26 views
18

Używam Git w systemie Windows, w sieci firmowej, gdzie jestem za proxy HTTP z podstawowym uwierzytelniania. Wychodzący SSH nie działa, więc muszę używać HTTPS przez proxy.Używanie Git w Windows, za proxy HTTP, bez zapisywania hasła proxy na dysku

Jestem świadomy, jak używać git config http.proxy, aby skonfigurować ustawienia jako http://[username]:[password]@[proxy]:[port].

Jednakże, szczególnie, że jest to współdzielona maszyna, wolałbym nie przechowywać mojego hasła w moim .gitconfig. Ponadto zmiana mojego .gitconfig przy użyciu polecenia git config pozostawia moje hasło w historii bash, więc nawet jeśli pamiętam, aby wyczyścić moją .gitconfig pod koniec sesji, prawie na pewno zapomnę również wyczyścić moją historię.

Próbowałem ustawić bez hasła, w próżnej nadziei, że dostanę monit pytając mnie o moje hasło, gdy próbuję nacisnąć/wyciągnąć, ale dostaję tylko 407 uwierzytelnianie proxy wymagane. Wszystkie informacje znalezione w Internecie wydają się albo zignorować problemy z hasłem zapisanym w zwykłym tekście w .gitconfig, albo dotyczyć serwerów proxy NTLM.

Jestem całkiem szczęśliwy, wpisując dane mojego proxy za każdym razem, gdy potrzebuję się połączyć - najlepsze rozwiązanie, jakie widzę w tej chwili, to napisanie skryptu otoki, który poprosi o podanie hasła i ustawi je jako zmienną środowiskową podczas wywoływania git właściwe. Czy jest to przyzwoite rozwiązanie i czy istnieją jakiekolwiek implikacje związane z bezpieczeństwem w ustawianiu zmiennej środowiskowej dla pojedynczego wywołania w skrypcie? Czy są jakieś wbudowane ustawienia lub istniejące narzędzia, których mogę użyć do tego?

Odpowiedz

16

Zamiast ustawienia git, można również użyć zmiennej środowiskowej (który można ustawić tylko dla sesji), jak opisano w this answer:

set http_proxy=http://username:[email protected]:port 
set https_proxy=http://username:[email protected]:port 
set no_proxy=localhost,.my.company 

Więc skrypt otoki mógł, zamiast modyfikowania .gitconfig (i pozostawiając hasło w postaci zwykłego tekstu) ustaw zmienne środowiskowe na żądanie, tylko dla bieżącej sesji.

2

Odpowiedź VonC nie zawsze rozwiązuje problem. Nie wiem dlaczego, ale może to zależeć od serwera proxy - a może jest to jakiś inny problem?

Może pomóc w zastąpieniu protokołu git:// repozytorium za pomocą http://.

Uwaga: Ponieważ w odpowiedzi VonC za, będziesz musiał ustawić http(s)_proxy zmienne środowiskowe pierwsze:

set http_proxy=http://username:[email protected]:port 
set https_proxy=http://username:[email protected]:port 

Na przykład, klon Marble służy stabilny git zazwyczaj być sklonowane w ten sposób (z marble documentation):

git clone -b Applications/15,12 git: //anongit.kde.org/marble ~/marmur/źródła

W cmd (zakładając http_proxy został ustawiony), wtedy można mieć okna używać http[s]:// zamiast:

git clone -b Applications/15.12 http://anongit.kde.org/marble ~/marble/sources 
-1

Jeśli jesteś za serwerem proxy, należy to.

Upewnij Port 9418 jest wykluczona z rules.Ask firewall administratora sieci

Wyłączony Proxy, jeśli jest już ustawiony:

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

Ustawić właściwy Proxy:

Typowe błędy:

  • 502: URL/IP jest nieosiągalny z twojej sieci.
  • 407: Odmowa uwierzytelnienia proxy.
  • 80: Serwer proxy nie został ustawiony prawidłowo.
7

od git 2.8.0

git config --global http.proxy http://[user]@proxyhost:port 
git config --global credential.helper wincred