Jak sprawić, by Git używał serwera proxy?
Muszę sprawdzić kod z serwera Git, ale za każdym razem wyświetla się komunikat „Upłynął limit czasu żądania”. Jak to obejść?
Alternatywnie, jak mogę ustawić serwer proxy?
Jak sprawić, by Git używał serwera proxy?
Muszę sprawdzić kod z serwera Git, ale za każdym razem wyświetla się komunikat „Upłynął limit czasu żądania”. Jak to obejść?
Alternatywnie, jak mogę ustawić serwer proxy?
Odpowiedzi:
Polecenie użycia:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
proxyuser
na użytkownika proxyproxypwd
hasło do swojego serwera proxyproxy.server.com
na adres URL swojego serwera proxy8080
na port proxy skonfigurowany na serwerze proxyPamiętaj, że działa to zarówno dla repozytoriów http, jak i https.
Jeśli w dowolnym momencie zdecydujesz się zresetować tego serwera proxy i pracować bez serwera proxy:
Polecenie użycia:
git config --global --unset http.proxy
Na koniec, aby sprawdzić aktualnie ustawiony serwer proxy:
git config --global --get http.proxy
%40
jako zamiennika ciągu @
nazwy użytkownika / hasła, chociaż sam tego nie testowałem. Mam nadzieję, że to pomoże. :-)
To działało dla mnie w Windows XP za korporacyjną zaporą ogniową.
Nie musiałem instalować żadnego lokalnego serwera proxy ani żadnego innego oprogramowania oprócz git v1.771 z http://code.google.com/p/msysgit/downloads/list?can=3
$ 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 = użytkownik proxy, do którego zostałem przydzielony przez nasz dział IT, w moim przypadku jest to ten sam użytkownik systemu Windows, którego używam do logowania się na komputerze, użytkownik Active Directory
proxypwd = hasło mojego użytkownika proxy
proxy.server.com:8080 = nazwa i port proxy, mam go z Panelu sterowania, Opcje internetowe, Połączenia, przycisk Ustawienia sieci LAN, przycisk Zaawansowane w sekcji Serwer proxy, użyj nazwy serwera i portu w pierwszym wierszu (http) .
mygithubuser = użytkownik, którego używam do logowania się na github.com
mygithubpwd = hasło dla mojego użytkownika github.com
repoUser = właściciel użytkownika repo
repoName = nazwa repo
git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crt
plus certyfikaty pobrane zgodnie z opisem w simplicidade.org/notes/archives/2011/06/… (dzięki: stackoverflow.com/a/7206627/98528 ) zrobiły to dla mnie!
git://
protokołu.
Ustaw zmienną systemową o nazwie http_proxy
o wartości ProxyServer:Port
. To jest najprostsze rozwiązanie. Odpowiednio, użyj https_proxy
zgodnie ze wskazaniami Daefu w komentarzach.
Ustawienie gitproxy (jak wspomina sleske) to kolejna opcja, ale wymaga „polecenia”, które nie jest tak proste jak powyższe rozwiązanie.
Odnośniki: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html
http_proxy
wymagane są adresy URL HTTP i https_proxy
wymagane są adresy URL HTTPS. Alternatywnie można ustawić tylko all_proxy
dla wszystkich adresów URL. Zobacz ENVIRONMENT
sekcję w curl (1) . Jednak podczas ustawiania opcji git-config http.proxy
jest używany zarówno dla adresów URL HTTP, jak i HTTPS. Zobacz http.proxy
w git-config (1) .
Jeśli konfiguracja serwera proxy z linii poleceń nie działa, prawdopodobnie możesz po prostu edytować plik .gitconfig (w katalogu głównym swojego profilu, który może ukrywać się zarówno w C: \ Documents and Settings, jak i na niektórych dyskach sieciowych) i dodać to :
[http]
proxy = http://username:password@proxy.at.your.org:8080
YMMV obejmuje to jednak tylko pierwszy krok konfiguracji wiersza poleceń. Być może będziesz musiał również edytować systemową konfigurację git i nie mam pojęcia, gdzie to ukryli.
Alternatywnie do używania git config --global http.proxy address:port
możesz ustawić proxy w wierszu poleceń:
git -c "http.proxy=address:port" clone https://...
Zaletą jest to, że proxy nie jest ustawione na stałe. W Bash możesz ustawić alias:
alias git-proxy='git -c "http.proxy=address:port"'
Jeśli używasz Ubuntu, wykonaj następujące czynności ...
Krok 1: Zainstaluj korkociąg
$ sudo apt-get install corkscrew
Krok 2: Napisz skrypt o nazwie git-proxy.sh i dodaj następujące
#!/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 $*
Krok 3: Wykonaj skrypt
$ chmod +x git-proxy.sh
Krok 4: Skonfiguruj komendę proxy dla GIT, ustawiając zmienną środowiskową
$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"
Teraz użyj poleceń git, takich jak
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
"$@"
zamiast $*
. Więcej informacji znajduje się w instrukcji obsługi powłoki.
Napotkano ten sam problem z powodu wielu .gitconfig
plików w systemie Windows, wykonaj poniższe kroki, aby to naprawić:
Krok 1: Otwórz Git BASH
Krok 2: Wyszukaj .gitconfig
, wykonując następujące polecenie:
git config --list --global --show-origin
Krok 3: Skopiuj poniższą treść w .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
Spróbuj umieścić następujące informacje w pliku ~ / .gitconfig:
[http]
proxy = http://proxy:8080
[https]
proxy = http://proxy:8080
[url "https://"]
insteadOf = git://
Dla protokołu git (git: // ...) zainstaluj socat i napisz skrypt, taki jak:
#!/bin/sh
exec socat - socks4:your.company.com:$1:$2
uczyń go wykonywalnym, umieść go na swojej ścieżce, a w ~/.gitconfig
zestawie core.gitproxy
na nazwę tego skryptu.
socat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
set GIT_PROXY_COMMAND=path\to\script
aby GIT korzystał z proxy bez bałaganu w git config.
Jest coś, co zauważyłem i chcę się tutaj podzielić:
git config --global http.proxy http://<proxy address>:<port number>
Powyższa metoda nie będzie działać dla adresów URL ssh (tj. git@github.com:<user name>/<project name>.git
):
git clone git@github.com:<user name>/<project name>.git // will not use the http proxy
I nic się nie zmieni, jeśli ustawimy SSH przez port HTTPS ( https://help.github.com/en/articles/using-ssh-over-the-https-port ), ponieważ zmienia tylko port (domyślnie 22 ) łączy się połączenie ssh.
(Nie jesteś rodzimym językiem angielskim, w razie potrzeby popraw moje słowa)
Pracuję w systemie Windows XP w pracy (stan / rząd), więc zrobiłem swoje badania i znalazłem to tutaj i zadziałało to dla mnie. Mam nadzieję że to pomoże :)
Zmienna środowiskowa http_proxy
Jeśli korzystasz z serwera proxy lub zapory, może być konieczne ustawienie zmiennej środowiskowej http_proxy, aby uzyskać dostęp do niektórych adresów URL z wiersza poleceń. Przykład: Instalowanie ppm dla Perla lub stosowanie RPM w Linuksie, aktualizacja Ubuntu
Ustaw zmienną http_proxy za pomocą nazwy hosta lub adresu IP serwera proxy: http_proxy = http: // [proxy.example.org]
Jeśli serwer proxy wymaga nazwy użytkownika i hasła, dołącz je w następującej formie: http_proxy = http: // [nazwa użytkownika: hasło@proxy.example.org]
Jeśli serwer proxy używa portu innego niż 80, podaj numer portu: http_proxy = http: // [nazwa użytkownika: hasło@proxy.example.org: 8080]
Windows XP
- Otwórz Panel sterowania i kliknij ikonę System.
- Na karcie Zaawansowane kliknij Zmienne środowiskowe.
- Kliknij Nowy w panelu Zmienne systemowe.
- Dodaj http_proxy z odpowiednimi informacjami o serwerze proxy (patrz przykłady powyżej).
Linux, Solaris lub HP-UX
Ustaw zmienną środowiskową http_proxy za pomocą polecenia specyficznego dla twojej powłoki (np. Ustaw lub eksportuj). Aby ta zmiana była trwała, dodaj polecenie do odpowiedniego pliku profilu dla powłoki. Na przykład w bash dodaj do pliku .bash_profile lub .bashrc wiersz podobny do następującego:
- http_proxy = http: // [nazwa użytkownika: hasło @ nazwa hosta: port];
- eksportuj $ http_proxy
Oprócz tych odpowiedzi uznałem za pomocne rozważenie tych 2 punktów:
Konieczne może być wymuszenie schematu uwierzytelniania:
[http]
# https://github.com/git/git/blob/master/Documentation/config.txt
proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm
Ponadto, zazwyczaj w przypadku schematu uwierzytelniania NTLM, może być konieczne podanie jawnie domeny AD.
W git bash:
echo %userdomain%
I odpowiednio zaktualizuj http.proxy:
git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080
W każdym razie dochodzenie może być pomocne poprzez dodanie dzienników CURL:
export GIT_CURL_VERBOSE=1
git config --global http.proxyAuthMethod basic
. Git gersion 2.8.3 nie wysłał żadnego uwierzytelnienia, dopóki nie ustawię tego parametru konfiguracyjnego.
Jeśli masz zainstalowane i skonfigurowane tsocks lub proxy , możesz to zrobić
$ tsocks git clone <you_repository>
lub
$ proxychains git clone <you_repository>
aby było krótsze, stworzyłem link /usr/bin/p
do symbolu proxychains
, dzięki czemu mogę go używać w ten sposób
p git clone <you_repository>
i mogę go użyć do proxy dowolnego polecenia,
p <cmd-need-be-proxied>
nawiasem mówiąc, proxy nie są aktualizowane przez długi czas, możesz chcieć spróbować proxyych
Ustawienie git proxy na terminalu
gdyby
Ustaw raz globalnie
git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_url:proxy_port
jeśli chcesz ustawić proxy tylko dla jednego projektu git (mogą wystąpić sytuacje, w których możesz nie chcieć używać tego samego proxy lub dowolnego proxy dla niektórych połączeń git)
//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
jeśli chcesz wyświetlić bieżące ustawienia proxy
git config --list
jeśli chcesz usunąć serwer proxy globalnie
git config --global --unset http.proxy
git config --global --unset https.proxy
jeśli chcesz usunąć proxy tylko dla jednego git roota
//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy
oto ustawienie proxy
git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>
Postępowałem zgodnie z większością odpowiedzi, które zostały tu polecone. Najpierw dostałem następujący błąd:
krytyczny: nie można uzyskać dostępu do „ https://github.com/folder/sample.git/ ”: schannel: next InitializeSecurityContext nie powiodło się: Nieznany błąd (0x80092012) - Funkcja odwołania nie mogła sprawdzić odwołania certyfikatu.
Następnie wypróbowałem następujące polecenie @Salim Hamidi
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
Ale dostałem następujący błąd:
krytyczny: nie można uzyskać dostępu do „ https://github.com/folder/sample.git/ ”: odebrano kod HTTP 407 z serwera proxy po CONNECT
Może się to zdarzyć, jeśli serwer proxy nie może zweryfikować certyfikatu SSL. Chcemy więc upewnić się, że weryfikacja ssl jest wyłączona (niezalecana w przypadku niezaufanych witryn), więc wykonałem następujące kroki zalecane przez @Arpit, ale z niewielkimi zmianami:
1. Najpierw pamiętaj o usunięciu poprzednich ustawień proxy:
git config --global --unset http.proxy
2. Następnie wyświetl listę i pobierz zawartość gitconfig
git config --list --show-origin
3.Ostatnia aktualizacja zawartości pliku gitconfig, jak poniżej:
[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
Próbowałem wszystkich powyższych odpowiedzi i nic mi nie działało, ponieważ wystąpiły problemy z kodowaniem hasła proxy.
To polecenie działało:
git config --global http.proxy http://username@proxy.example.com:PortNumber
Nie wpisuj hasła w swoim poleceniu. Będzie dynamicznie pytał, kiedy spróbujesz połączyć się z dowolnym repozytorium git.
Dla użytkowników systemu Windows: Jeśli git config
lub set http_proxy=
nie działa, to odpowiedź może pomóc:
zamień git://
protokół repozytorium git na http://
. Pamiętaj, że i tak musisz ustawić http_proxy
pierwszą.
Po niestrudzonym wypróbowaniu wszystkich rozwiązań na tej stronie, pracowałem nad użyciem i klucza SSH zamiast tego!