git повертає помилку http 407 з проксі після CONNECT


95

У мене проблема під час підключення до github зі свого ПК за допомогою git. Система Win 7.

У мене є підключення через проксі, тому я вказав його в конфігураційних файлах git (як у загальній папці git, так і в папці git repo). Для цього я ввів наступний рядок до мого git bush:

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

Як це працює в інших програмах (наприклад: maven), це виглядає так:

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

Але коли я намагаюся натиснути або клонувати своє репо, я отримую

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

Я намагаюся вже ввести не просто своє ім'я користувача, а домен \ ім'я користувача, змінив свій пароль на випадок, якщо є проблеми з таблицями мови коду. І я навіть ввів неправильний пароль. Помилка залишилася незмінною.

Коли я увійшов у '10 .65.64.177.com 'і спробував натиснути репо, я отримав:

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

Просто не знаю, що спробувати.


Дублікат stackoverflow.com/questions/8561671 ? Подивіться там мою відповідь про https-проксі.
thinkOfaNumber

1
Я отримав ту саму проблему після того, як оновив пароль для Windows в середовищі AD. Виявляється, мені просто довелося перезапустити проксі-сервер (cntlm).
Aaron C

Відповіді:


85

У мене спрацювало щось подібне до того, що пропонує рохітмохта; у звичайному командному рядку DOS (не в git bash):

перший

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

а в деяких випадках також

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

тоді

git config --global http.sslVerify false

(Я підтверджую, що це необхідно: якщо встановлено значення true, отримує помилку "Проблема сертифіката SSL: не вдається отримати сертифікат місцевого видавця")

у моєму випадку немає необхідності визначати змінну all_proxy

і, нарешті

git clone https://github.com/someUser/someRepo.git

1
Мені не потрібен "git config --global http.sslVerify false", але це, ймовірно, залежить від конфігурації проксі.
anre

1
Ця відповідь працює, і її слід позначити як правильну.
Nadeem Iqbal

Потрібно зробити це в git bash, а не в DOS для мене. Я помітив, що DOS нічого не робив! тобто перевірте це, виконавши: git config --global -l
theQuestionMan

Чим відповідь git config --global http.proxy http://username:password@proxiURL:proxiPortвідрізняється від запитання, git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>крім того, що вона є менш правильною, оскільки потрібно вказати проксі- хост , а не URL-адресу ?
Мішель Юнг,

Працює як шарм
Полікарп Каву

38

Мені довелося налаштувати всі 4 речі за .gitconfigдопомогою:

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

Тільки тоді клонування пройшло успішно.


Я спробував усі варіанти, згадані тут, і досі це не працює для мене. :(
Ксав'є Джеффрі

Чому, до біса, всі пропонують обійти перевірку SSL ??? ЦЕ НЕЗАБЕЗПЕЧЕНО і може скомпрометувати вашу систему!
escapeerwiesel

3
@flederwiesel Оскільки корпоративні проксі-сервери є злом і спричиняють різну дурість - наприклад, зберігати облікові дані домену в чистому тексті в півдюжині місць, щоб ви могли отримати доступ до проксі-ресурсів. І примусове використання небезпечних кореневих сертифікатів, виданих компанією, або обхід / ігнорування перевірки SSL повністю. Це досить сумно.
ggranum

36

Наступна команда потрібна, щоб змусити git надсилати облікові дані та метод автентифікації проксі-серверу:

git config --global http.proxyAuthMethod 'basic'

Джерело: https://git-scm.com/docs/git-config#git-config-httpproxyAuthMethod


2
Це, нарешті, у мене спрацювало! після встановлення проксі-сервера у файлі конфігурації.
Dhanesh KM

3
Це також було для мене відсутнім шматочком. Дякую. (Зазвичай я не стикаюся з коментарями "я теж", але ця відповідь досить далека і потребує більше любові).
ggranum

Саме цього не вистачало!
ivspenna

Це закінчилося тим , що в тільки GIT варіанти конфігурації мені потрібно, так як моя змінна https_proxy середовища була встановлено в / і т.д. / навколишньому середовищу.
Ракурай

36

Можливо, ви вже використовуєте налаштування системного проксі - у цьому випадку буде знято всі налаштування git-проксі :

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

1
Це принаймні унеможливило появу помилки та створило запит на ім’я користувача / пароль. Здається, що клієнт git іноді неправильно встановлює проксі за замовчуванням. У мене трапилася така сама помилка під час використання SourceTree від Atlassian.
Kelly S. French

Це вирішило проблему для мене на Ubuntu 14.04 після багатьох подряпин!
Тім Ебенезер

2
Це також вирішило це для мене при використанні SourceTree, дякую.
TomSW

Я отримував цю помилку під час спроби встановити homebrew ... це вирішило мою проблему. Дякую.
joeCarpenter

Дякую, це єдине, що працювало у мене при роботі з віддаленого місця через тунель VPN.
Метт

18

Я стикався з подібною проблемою за корпоративним брандмауером. Зробив наступне та зміг клонувати сховище за допомогою оболонки git з моєї системи під управлінням Windows 7 SP1.

  1. Встановіть змінну середовища 'all_proxy' для вашого користувача. Потрібно завити.

    export all_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  2. Встановіть змінну середовища 'https_proxy' для вашого користувача. Потрібно завити.

    export https_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  3. Я не впевнений, чи це має якийсь вплив. Але я зробив це, і це спрацювало:

    git config --global http.sslverify false
    
  4. Використовуйте https: // для клонування

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

Примітка 1. Не використовуйте http: //. Використовуючи це, можна отримати помилку нижче. Це можна вирішити за допомогою https: //.

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

Примітка 2: Уникайте введення @ у своєму паролі. Можна використовувати $.


Ви можете використовувати https_proxy = DOMAIN \ "proxyuser: proxypwd" @ proxy.server.com: 8080 із подвійними лапками та вводом @пароля.
Vadorequest

1
Я знаю, що є хитрість із використанням лапок "навколо login:password. Але я насправді намагався і git проігнорував цитати, тому @в паролі це зіпсовано. Якщо у когось є обхідний шлях, я думаю, що варто це згадати.
Vadorequest

1
Я спробував усі команди, запропоновані вище, але після цього я почав отримувати отриманий код HTTP 407 від проксі після CONNECT.
user130934

1
Ви можете закодувати URL-адресу будь-яких спеціальних символів. Наприклад, @ стає% 40. meyerweb.com/eric/tools/dencoder
Брайант

6

У мене була та ж проблема в середовищі Windows.

Я щойно вирішив з NTLM-APS (проксі-сервер автентифікації Windows NT)

Налаштуйте проксі-сервер NTML і встановіть для нього Git:

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

3

Мав помилку 407 з Android Studio. Спробував додати проксі, але нічого не сталося. З’ясував, що це пов’язано із сертифікатом компанії, тому я експортував цей із мого браузера та додав до Git.

Експорт із веб-браузера

Властивості браузера> Вміст> Сертифікати> Експортувати (Майстер слідування, я вибрав формат «Базовий код 64, кодований X.509 (.CER))

У Git Bash

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

Наступна сторінка була корисною https://blogs.msdn.microsoft.com/phkelley/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exes-store/

Щоб додати проксі, як і інші потоки, якими я користувався

git config --global http.proxy proxy.company.net:8080
git config --global https.proxy proxy.company.net:8080

1
Я б не перезаписував сховище ключів за замовчуванням, "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"а натомість додав би до нього сертифікат вашої компанії (можливо, в окремому файлі, як описано у посиланні).
jansohn

3

Я стикався з тією ж проблемою, тому спочатку я перевірив свій файл npm, що я встановив, і перевірив його за допомогою цієї команди: -

npm config get proxy

і я з’ясовую, що встановив неправильний проксі-сервер, і встановив проксі-сервер бажання наступним чином:

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

Після цього мені це вдається


1
Ви впевнені в команді: "npm config ...", бо, мабуть, це має бути "git config ..."
Gaurav Lad


1

У мене була така сама проблема в моїй організації.

Після багатьох спроб я дійшов наступного рішення:

  1. Я звернувся до системного адміністратора з проханням змінити тип автентифікації проксі-сервера з Kerberos на NTLM. Я не впевнений, що це було обов’язково (я невігла в цьому питанні), але мою заявку було схвалено.

  2. Після цього я додаю налаштування Git

    git config --global http.proxyauthmethod ntlm

Тільки після цього я зміг клонувати своє сховище


1

У мене була та ж проблема, і я спробував її вирішити, встановивши явно http.proxyAuthMethod на basic.

Після запуску трасування pcap між моїм сервером та проксі-сервером, я помітив, що запит "HTTP CONNECT", надісланий проксі-серверу під час клонування git, все ще не має заголовка "Авторизація проксі-сервера", встановленого на базовий. Це було пов'язано з моєю версією git "1.8.3.1", яка не підтримує http.proxyAuthMethod.

Після встановлення найновішої версії git (2.16.6), використовуючи пакунки rpm, які тут недоторкані " https://repo.ius.io/7/x86_64/packages/g/ ", встановлення http.proxyAuthMethod як базового, нарешті, вплинуло на git поведінки, і тоді мій клон git був успішним.

Сподіваюся, це допоможе


0

Я думаю, вам слід зосередити свої зусилля після того, як дійдете до цього моменту:

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

Це означає, що ви не належним чином автентифікувались за допомогою проксі-сервера. Чи можете ви ще раз перевірити правильність введеного вами пароля на цьому кроці?

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

0

Ця проблема виникла кілька днів тому з моїми сховищами Bitbucket. Я зміг це виправити, встановивши віддалену URL-адресу на http, а не на https.

Я також спробував встановити https-проксі в командному рядку та конфігурації git, але це не спрацювало.

$ git pull
fatal: unable to access 'https://username@bitbucket.org/sacgf/x.git/': Received HTTP code 407 from proxy after CONNECT

Зверніть увагу, що ми використовуємо https:

$ git remote -v
origin  https://username@bitbucket.org/sacgf/x.git (fetch)
origin  https://username@bitbucket.org/sacgf/x.git (push)

Замініть https url на http url:

$ git remote set-url origin http://username@bitbucket.org/sacgf/x.git
$ git pull
Username for 'https://bitbucket.org': username
Password for 'https://username@bitbucket.org': 
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

0

Я зазнав цієї помилки через те, що моя корпоративна мережа використовувала один проксі-сервер, перебуваючи в приміщенні, і другий (зовсім інший) проксі-сервер, коли VPN був ззовні. Спочатку я був налаштований на локальний проксі, отримав помилку, а потім мені довелося оновити конфігурацію, щоб використовувати альтернативний, позапрофільний проксі під час роботи в іншому місці.


0

У мене була подібна проблема, і я вирішив її з наступними кроками:

** Додайте деталі проксі в 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

0

Ця конфігурація працює в моєму налаштуванні:

[http]
    proxy = <your proxy>
[https] proxy = <your proxy>
[http]
    sslVerify = false
[https]
    sslVerify = false   
[credential]
    helper = wincred 

0

У вас така сама проблема під час використання sourcetree. Причиною було, можливо, перемикання системного проксі з увімкнення на вимкнення, коли sourcetree було відкрито. З якоїсь причини це було записано у конфігураційний файл проекту. Це можна легко видалити за допомогою sourcetree за допомогою "Налаштування" -> "Редагувати файл конфігурації". Просто видаліть його там за адресою http


0

Я зіткнувся з такою ж проблемою під час використання Git Bash. Коли я робив те саме в командному рядку, він працював ідеально.


0

FYI для інформації всіх

Це було б відповідним рішенням для усунення наступної помилки

Received HTTP code 407 from proxy after CONNECT

Отже, наступні команди повинні бути необхідними

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

Що створить наступну конфігурацію

$ cat ~/.gitconfig
[http]
        proxy = http://user:pass@proxyserver:port
        proxyAuthMethod = basic

0

Видалення "@" з пароля спрацювало для мене, і ні в якому разі не зберігайте @ у своєму паролі, це дасть вам проблему з maven і подальшу інсталяцію

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.