git zwraca błąd http 407 z serwera proxy po połączeniu

98

Mam problem podczas łączenia się z github z mojego komputera za pomocą git. System Win 7.

Mam połączenie przez proxy, więc określiłem je w plikach konfiguracyjnych git (zarówno w ogólnym folderze git, jak iw folderze git repo). Aby to zrobić, wprowadziłem następną linię do mojego git busha:

$ git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>

Sposób działania na innych programach (np. Maven) wygląda tak:

<username> - my login to our corp system
<userpsw> -my password to corporat system
<proxy> - 10.65.64.77
<port> - 3128

Ale kiedy próbuję wypchnąć lub sklonować moje repozytorium, otrzymuję

fatal: unable to access '<repo githup link>' Received HTTP code 407 from proxy after CONNECT

Próbuję już wprowadzić nie tylko swoją nazwę użytkownika, ale domenę \ nazwę użytkownika, zmieniłem hasło w przypadku problemów z tabelami języków kodu. I nawet wprowadziłem złe hasło. Błąd pozostał ten sam.

Kiedy wszedłem na '10 .65.64.177.com 'i próbowałem push repo, otrzymałem:

fatal: unable to access '<repo github link>': Failed connect to github.com:3128; No error

Po prostu nie wiem, czego spróbować.

Olga Chernyavskaya
źródło
Duplikat pliku stackoverflow.com/questions/8561671 ? Zobacz moją odpowiedź na temat serwera proxy https.
thinkOfaNumber
1
Ten sam problem pojawiał się po zaktualizowaniu hasła systemu Windows w środowisku AD. Okazało się, że po prostu musiałem zrestartować serwer proxy (cntlm).
Aaron C

Odpowiedzi:

87

U mnie zadziałało coś podobnego do tego, co proponuje rohitmohta; w zwykłym wierszu poleceń DOS (nie w git bash):

pierwszy

git config --global http.proxy http://username:password@proxiURL:proxiPort

aw niektórych przypadkach także

git config --global https.proxy http://username:password@proxiURL:proxiPort

następnie

git config --global http.sslVerify false

(Potwierdzam, że jest to konieczne: jeśli ustawione na prawda, pojawia się błąd „Problem z certyfikatem SSL: nie można uzyskać certyfikatu lokalnego wydawcy”)

w moim przypadku nie ma potrzeby definiowania zmiennej all_proxy

i w końcu

git clone https://github.com/someUser/someRepo.git
Vincent F.
źródło
1
Nie potrzebowałem "git config --global http.sslVerify false", ale to prawdopodobnie zależy od konfiguracji proxy.
2016
1
Ta odpowiedź działa i powinna zostać oznaczona jako poprawna.
Nadeem Iqbal
Musiałem to zrobić w git bash, a nie w DOS-ie. Zauważyłem, że DOS nic nie zrobił! to znaczy. sprawdź to, wykonując: git config --global -l
theQuestionMan
Czym odpowiedź git config --global http.proxy http://username:password@proxiURL:proxiPortróżni się od pytania git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>innego niż mniej poprawna, ponieważ trzeba określić hosta proxy , a nie adres URL ?
Michel Jung
Działa jak urok
Polycarp Kavoo
40

Następujące polecenie jest potrzebne, aby wymusić na git wysłanie poświadczeń i metody uwierzytelniania do serwera proxy:

git config --global http.proxyAuthMethod 'basic'

Źródło: https://git-scm.com/docs/git-config#git-config-httpproxyAuthMethod

Marijus Ravickas
źródło
3
To w końcu zadziałało! po ustawieniu proxy w pliku konfiguracyjnym.
Dhanesh KM
3
To też był dla mnie brakujący element. Dziękuję Ci. (Zwykle nie napotykam komentarzy „ja też”, ale ta odpowiedź jest dość odległa i wymaga więcej miłości).
ggranum
Właśnie tego brakowało!
ivspenna
Skończyło się na tym, że była to jedyna opcja konfiguracji git, której potrzebowałem, ponieważ moja zmienna środowiskowa https_proxy została ustawiona w / etc / environment.
Rakurai
38

Musiałem konfiguracji wszystkie 4 rzeczy w .gitconfigz:

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global http.proxy http://user:pass@yourproxy:port
git config --global https.proxy http://user:pass@yourproxy:port

Dopiero wtedy klonowanie się powiodło.

Miroslav Mocek
źródło
Wypróbowałem wszystkie wymienione tutaj opcje i nadal nie działają. :(
Xavier Geoffrey
Dlaczego do cholery wszyscy proponują obejście weryfikacji SSL ??? JEST TO NIEBEZPIECZNE i może zagrozić Twojemu systemowi!
flederwiesel
3
@flederwiesel Ponieważ korporacyjne serwery proxy są złe i powodują różnego rodzaju głupoty - na przykład konieczność przechowywania danych uwierzytelniających domeny w postaci zwykłego tekstu w pół tuzinie miejsc, aby faktycznie uzyskać dostęp do zasobów proxy. Wymuszenie korzystania z niezabezpieczonych certyfikatów głównych wydanych przez firmę lub całkowite pominięcie / zignorowanie weryfikacji SSL. To dość smutne.
ggranum
37

Być może już używasz systemowego ustawienia proxy - w takim przypadku odznaczenie wszystkich serwerów proxy git będzie działać:

git config --global --unset http.proxy
git config --global --unset https.proxy
rekinyz
źródło
1
To przynajmniej zapobiegło pojawieniu się błędu i wygenerowało monit o podanie nazwy użytkownika / hasła. Wygląda na to, że klient git czasami nieprawidłowo ustawia serwer proxy. Ten sam błąd wystąpił podczas korzystania z SourceTree firmy Atlassian.
Kelly S. French
To rozwiązało problem z Ubuntu 14.04 po wielu drapaniach po głowie!
Tim Ebenezer
2
To również rozwiązało problem podczas korzystania z SourceTree, dzięki.
TomSW
Otrzymałem ten błąd podczas próby zainstalowania homebrew ... to rozwiązało mój problem. Dzięki.
joeCarpenter
Dziękuję, to jedyna rzecz, która działała dla mnie podczas pracy ze zdalnej lokalizacji przez tunel VPN.
Matt,
18

Miałem podobny problem za zaporą korporacyjną. Wykonałem następujące czynności i mogłem sklonować repozytorium przy użyciu powłoki git z mojego systemu z systemem Windows 7 SP1.

  1. Ustaw zmienną środowiskową „all_proxy” dla swojego użytkownika. Wymagane przez curl.

    export all_proxy=http://DOMAIN\proxyuser:[email protected]:8080
    
  2. Ustaw zmienną środowiskową „https_proxy” dla swojego użytkownika. Wymagane przez curl.

    export https_proxy=http://DOMAIN\proxyuser:[email protected]:8080
    
  3. Nie jestem pewien, czy ma to jakiś wpływ. Ale zrobiłem to i zadziałało:

    git config --global http.sslverify false
    
  4. Użyj https: // do klonowania

    git clone https://github.com/project/project.git
    

Uwaga-1: nie używaj http: //. Użycie tego może spowodować poniższy błąd. Można to rozwiązać za pomocą https: //.

 error: RPC failed; result=56, HTTP code = 301

Uwaga-2: Unikaj umieszczania znaku @ w haśle. Można jednak użyć $.

rohitmohta
źródło
Możesz użyć https_proxy = DOMAIN \ "proxyuser: proxypwd" @ proxy.server.com: 8080 z podwójnymi cudzysłowami i hav an @w haśle.
Vadorequest
1
Wiem, że to sztuczka z użyciem cudzysłowów "wokół login:password. Ale faktycznie próbowałem i git zignorował cudzysłowy, więc @hasło w haśle zepsuło sprawę. Jeśli ktoś ma obejście, myślę, że warto o tym wspomnieć.
Vadorequest
1
Wypróbowałem wszystkie polecenia sugerowane powyżej, ale potem zacząłem otrzymywać kod HTTP 407 z serwera proxy po połączeniu.
user130934
1
Możesz zakodować w adresie URL dowolne znaki specjalne. Na przykład @ staje się% 40. meyerweb.com/eric/tools/dencoder
Bryant
6

Miałem ten sam problem w środowisku Windows.

Właśnie rozwiązałem problem z NTLM-APS (serwerem proxy uwierzytelniania systemu Windows NT)

Skonfiguruj swoje proxy NTML i ustaw na nim Git:

git config --global http.proxy http://<username>:<userpsw>@localhost:<port>
pinei
źródło
3

Wystąpił błąd 407 z Android Studio. Próbowałem dodać serwer proxy, ale nic się nie stało. Okazało się, że jest to związane z certyfikatem firmy, więc wyeksportowałem ten z przeglądarki i dodałem do Gita.

Eksportuj z przeglądarki internetowej

Opcje internetowe> Treść> Certyfikaty> Eksportuj (Postępuj zgodnie z instrukcjami kreatora, wybrałem format „X.509 z kodowaniem Base 64 (.CER))

W Git Bash

git config --global http.sslCAInfo c:\Utilities\Certificates\my_certificate

Poniższa strona była przydatna https://blogs.msdn.microsoft.com/phkelley/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exes-store/

Aby dodać proxy, podobnie jak inne wątki, których użyłem

git config --global http.proxy proxy.company.net:8080
git config --global https.proxy proxy.company.net:8080
beaumondo
źródło
1
Nie nadpisałbym domyślnego magazynu kluczy, "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"ale zamiast tego dodałem do niego certyfikat Twojej firmy (może w osobnym pliku, jak opisano w linku).
jansohn,
3

Miałem ten sam problem, więc najpierw sprawdziłem mój plik npm, co ustawiłem, sprawdziłem to za pomocą tego polecenia: -

npm config get proxy

i dowiaduję się, że ustawiłem niewłaściwy serwer proxy i ustawiłem proxy pożądania w następujący sposób:

npm config set proxy http://xxx.xxx.xxx.4:8080   
npm config set https-proxy http://xxx.xxx.xxx.4:8080

Potem mi się to udaje

user1989488
źródło
1
Czy jesteś pewien co do polecenia: "npm config ...", ponieważ przypuszczam, że powinno to być "git config ..."
Gaurav Lad
2

Twoje hasło wydaje się być nieprawidłowe. Sprawdź ponownie swoje poświadczenia.

neo china
źródło
2

FYI dla wszystkich informacji

Byłoby to odpowiednie rozwiązanie do rozwiązania następującego błędu

Received HTTP code 407 from proxy after CONNECT

Dlatego konieczne powinny być następujące polecenia

git config --global http.proxyAuthMethod 'basic'
git config --global https.proxy http://user:pass@proxyserver:port

Który wygenerowałby następujący plik config

$ cat ~/.gitconfig
[http]
        proxy = http://user:pass@proxyserver:port
        proxyAuthMethod = basic
meappy
źródło
1

Miałem ten sam problem w swojej organizacji.

Po wielu próbach doszedłem do następującego rozwiązania:

  1. Zwróciłem się do administratora systemu o zmianę typu uwierzytelniania proxy z Kerberos na NTLM. Nie jestem pewien, czy to było obowiązkowe (jestem ignorantem w tej sprawie), ale moja aplikacja została zaakceptowana.

  2. Następnie dodaję ustawienie Git

    git config --global http.proxyauthmethod ntlm

Dopiero potem mogłem sklonować swoje repozytorium

Кирилл Захаров
źródło
1

Miałem również ten sam problem i próbowałem go rozwiązać, ustawiając jawnie http.proxyAuthMethod na basic.

Po uruchomieniu śledzenia pcap między moim serwerem a proxy, zauważyłem, że żądanie „HTTP CONNECT” wysyłane do proxy podczas klonu git nadal nie ma nagłówka „Proxy-Authorization” ustawionego na basic. Wynikało to z mojej wersji gita „1.8.3.1”, która nie obsługuje protokołu http.proxyAuthMethod.

Po zainstalowaniu najnowszej wersji gita (2.16.6), używając pakietów rpm dostępnych tutaj " https://repo.ius.io/7/x86_64/packages/g/ ”, ustawienie http.proxyAuthMethod na basic miało w końcu wpływ na git zachowanie, a następnie mój klon git się powiódł.

mam nadzieję, że to pomoże

marwaneL
źródło
0

Myślę, że po dojściu do tego punktu powinieneś skoncentrować swoje wysiłki:

fatal: unable to access '<repo githup link>' Received HTTP code 407 from proxy after CONNECT

Oznacza to, że nie zostałeś poprawnie uwierzytelniony przez proxy. Czy możesz dwukrotnie sprawdzić, czy hasło podane w tym kroku jest prawidłowe?

git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>
Slak
źródło
0

Ten problem wystąpił kilka dni temu w moich repozytoriach Bitbucket. Udało mi się to naprawić, ustawiając zdalny adres URL na http zamiast https.

Próbowałem także ustawić serwery proxy https w wierszu poleceń i konfiguracji git, ale to nie zadziałało.

$ git pull
fatal: unable to access 'https://[email protected]/sacgf/x.git/': Received HTTP code 407 from proxy after CONNECT

Zauważ, że używamy https:

$ git remote -v
origin  https://[email protected]/sacgf/x.git (fetch)
origin  https://[email protected]/sacgf/x.git (push)

Zastąp adres URL https adresem URL http:

$ git remote set-url origin http://[email protected]/sacgf/x.git
$ git pull
Username for 'https://bitbucket.org': username
Password for 'https://[email protected]': 
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 43 (delta 31), reused 0 (delta 0)
Unpacking objects: 100% (43/43), done.
From http://bitbucket.org/sacgf/x
   a41eb87..ead1a92  master     -> origin/master
First, rewinding head to replay your work on top of it...
Fast-forwarded master to ead1a920caf60dd11e4d1a021157d3b9854a9374.
d
Dave Lawrence
źródło
0

Wystąpił ten błąd, ponieważ moja sieć firmowa korzystała z jednego serwera proxy w siedzibie i drugiego (zupełnie innego) serwera proxy, gdy VPN był używany z zewnątrz. Byłem pierwotnie skonfigurowany dla lokalnego serwera proxy, otrzymałem błąd, a następnie musiałem zaktualizować konfigurację, aby korzystać z alternatywnego serwera proxy poza siedzibą firmy podczas pracy w innym miejscu.

Shawn
źródło
0

Miałem podobny problem i rozwiązałem, wykonując poniższe czynności:

** Dodaj szczegóły serwera proxy w git **

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global http.proxy http://user:pass@yourproxy:port
git config --global https.proxy http://user:pass@yourproxy:port
Sairam Kukadala
źródło
0

Ta konfiguracja działa w mojej konfiguracji:

[http]
    proxy = <your proxy>
[https] proxy = <your proxy>
[http]
    sslVerify = false
[https]
    sslVerify = false   
[credential]
    helper = wincred 
meol
źródło
0

Mają ten sam problem podczas korzystania z drzewa źródłowego. Przyczyną było przełączenie serwera proxy systemu z włączonego na wyłączony, gdy drzewo źródłowe było otwarte. Z jakiegoś powodu zostało to zapisane w pliku konfiguracyjnym projektu. Można to łatwo usunąć z drzewa źródłowego poprzez „Ustawienia” -> „Edytuj plik konfiguracyjny”. Po prostu usuń go pod adresem http

Ska
źródło
0

Napotkałem ten sam problem podczas korzystania z Git Bash. Kiedy zrobiłem to samo w wierszu polecenia, zadziałało idealnie.

Daniel
źródło
0

Usunięcie „@” z hasła zadziałało dla mnie iw każdym razie nigdy nie zachowuj @ w swoim haśle spowoduje to problem z maven i dalszą instalacją

Codiee
źródło