Jak sprawić, by Git używał proxy Socks do transportu HTTP?
Udało mi się skonfigurować git z GIT_PROXY_COMMAND, aby używać proxy socks do transportu GIT.
Skonfigurowałem również mój plik .curlrc, aby zdefiniować proxy socks i mogę pobierać informacje bezpośrednio za pomocą polecenia curl, takiego jak:
curl http://git.kernel.org/pub/scm/git/git.git/info/refs?service=git-upload-pack
Ale jak używać proxy socks z git do pobierania danych za pomocą protokołu transportowego HTTP, takiego jak:
git clone http://git.kernel.org/pub/scm/git
Odpowiedzi:
Testowałem z Git 1.8.2 i SOCKS v5 proxy, działa dla mnie następujące ustawienie:
git config --global http.proxy 'socks5://127.0.0.1:7070'
AKTUALIZACJA 2017-3-31:
Zgodnie z dokumentem , pomimo nazwy , powinien działać zarówno dla adresów URL repozytoriów HTTP, jak i HTTPS. Dzięki @user za zwrócenie na to uwagi.
http
.proxy
AKTUALIZACJA 27.11.2018:
Aby wyłączyć proxy, uruchom polecenie:
git config --global --unset http.proxy
EDYCJA 2019-03-04:
Jeśli chcesz również, aby nazwa hosta była rozpoznawana za pomocą serwera proxy, użyj poniższego rozwiązania thuzhf, które używa
socks5h
zamiastsocks5
źródło
~/.gitconfig
i usuń,[https.proxy]
a[http.proxy]
sekcje, toini
plik, możesz go edytować.git -c http.proxy=socks5://127.0.0.1:7070
lub coś w tym rodzaju. Może można zrobić aliasgitsocks
do tego, który pozwoliłby, aby łatwo wywołać git i bez skarpetek jak desired`Jeśli nie chcesz ustawiać proxy jako konfiguracji globalnej, spróbuj
ALL_PROXY=
np:źródło
(Małe przypomnienie) Jeśli chcesz, aby nazwa hosta była również rozwiązywana przez serwer proxy (co oznacza przekazywanie wszystkiego przez proxy ), zwłaszcza gdy klonujesz treść , możesz użyć następującego ustawienia (kluczem jest to, że zamiast tego używa socks5h z SOCKS5 ):
źródło
Używam następującego polecenia, aby sklonować określone repozytorium z serwera proxy socks5. Ustawienia proxy są określane za pomocą
--config
opcji.źródło
Uwaga: łatka została zastosowana do gita w 2015 roku w wersji 2.4.11. Od tego czasu możesz po prostu używać socks: // urls z ustawieniami konfiguracyjnymi http.proxy.
Dla protokołu git: // używamy Gita z proxy SOCKS . Wygląda jednak na to, że git nie obsługuje poprawnie serwerów proxy skarpet. Sam git jest powiązany z libcurl. Więc plik .curlrc nie jest używany (to jest tylko dla klienta wiersza poleceń curl). Jednak następująca poprawka zapewnia niezbędne wsparcie. Po zastosowaniu tej łatki do git możemy po prostu ustawić zmienną środowiskową ALL_PROXY lub HTTP_PROXY lub HTTPS_PROXY na
socks://hostname:portnum
(lub socks4 / socks5) lub rzeczywiście ustawienie konfiguracyjne git http.proxy, a libcurl będzie teraz faktycznie używać protokołu socks podczas korzystania z proxy.Na przykład aktywny ślad:
Niezbędna poprawka:
źródło
W nawiązaniu do @briankip i usunięciu ustawienia proxy http, jak wspomniał Yang.Y, możesz bezpośrednio edytować plik ini.
Możesz to również zrobić w wierszu poleceń za pomocą
git config --global --unset http.proxy
Aby potwierdzić usunięcie, wyświetl bieżącą konfigurację za pomocą
git config --list
źródło
Żadna z sugerowanych metod nie zadziałała, więc znalazłem inne podejście, takie jak poniższa instrukcja:
SOCKS5
protokół przy użyciussh
:ssh -ND 9994 user@YourSshServer
proxychains
na hoście lokalnym, a nie na serwerze ssh, z którym jesteś połączony:apt-get
:sudo apt-get install proxychains
Sprawdź sekcję Instalacja w jego pliku readme.
Jak ustawić serwer proxy socks5 w przeglądarce Firefox
proxychains
plik konfiguracyjny:sudo nano /etc/proxychains.conf
następnie dodaj następujący wiersz na końcu pliku:socks5 127.0.0.1 9994
git
polecenia (proxychains
należy je umieścić przed poleceniem):proxychains git push origin develop
źródło
Żadne z powyższych nie działało niestety, ale to zadziałało:
Dodaj:
Gdzie „host.local” to klasyczny komputer Mac z włączoną opcją zdalnego logowania w ustawieniach udostępniania. Pracował dla mnie :)
źródło