git возвращает ошибку http 407 от прокси после CONNECT


99

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

У меня есть соединение через прокси, поэтому я указал его в файлах конфигурации git (как в общей папке git, так и в папке репозитория git). Для этого я ввел следующую строку в свой 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

Ответы:


87

То, что сработало для меня, похоже на то, что предлагает rohitmohta; в обычной командной строке 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
Этот ответ рабочий и должен быть отмечен как правильный.
Надим Икбал,

Мне нужно было сделать это в 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-адрес ?
Мишель Юнг

Работает как шарм
Поликарп Каву

40

Следующая команда необходима, чтобы заставить git отправить учетные данные и метод аутентификации на прокси:

git config --global http.proxyAuthMethod 'basic'

Источник: https://git-scm.com/docs/git-config#git-config-httpproxyAuthMethod


3
Наконец-то это сработало! после установки прокси в конфигурационном файле.
Dhanesh KM

3
Для меня это тоже было недостающим звеном. Спасибо. (Обычно я не сталкиваюсь с комментариями типа «я тоже», но этот ответ довольно низкий и требует большей любви).
ggranum

Это именно то, чего не хватало!
ivspenna

Это оказалось единственным параметром конфигурации git, который мне нужен, поскольку моя переменная среды https_proxy была установлена ​​в / etc / environment.
Ракурай

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

Только тогда клонирование прошло успешно.


Я перепробовал все варианты, упомянутые здесь, но у меня все еще не работает. :(
Xavier Geoffrey

Какого черта все предлагают обойти проверку SSL ??? ЭТО НЕБЕЗОПАСНО и может поставить под угрозу вашу систему!
flederwiesel

3
@flederwiesel Потому что корпоративные прокси-серверы являются злом и вызывают всевозможные глупости - например, необходимость хранить учетные данные вашего домена в открытом виде в полдюжине мест, чтобы вы действительно могли получить доступ к прокси-ресурсам. И принуждение к использованию небезопасных корневых сертификатов, выпущенных компанией, или полное обход / игнорирование проверки SSL. Это довольно печально.
ggranum

38

Возможно, вы уже используете настройку системного прокси - в этом случае отключите все прокси git :

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

1
Это, по крайней мере, предотвратило появление ошибки и сгенерировало запрос имени пользователя / пароля. Кажется, что клиент git иногда неправильно устанавливает прокси по умолчанию. У меня была такая же ошибка при использовании SourceTree от Atlassian.
Келли С. Френч,

Это решило для меня проблему с Ubuntu 14.04 после долгой царапины в голове!
Тим Эбенезер

2
Это также решило проблему при использовании SourceTree, спасибо.
TomSW

Я получал эту ошибку при попытке установить homebrew ... это решило мою проблему. Спасибо.
joeCarpenter

Спасибо, это единственное, что у меня сработало при удаленной работе через VPN-туннель.
Мэтт

18

Я столкнулся с аналогичной проблемой за корпоративным брандмауэром. Сделал следующее и смог клонировать репозиторий с помощью оболочки git из моей системы под управлением Windows 7 SP1.

  1. Установите для пользователя переменную окружения all_proxy. Требуется curl.

    export all_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  2. Установите для пользователя переменную окружения https_proxy. Требуется curl.

    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 04

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.

Экспорт из веб-браузера

Свойства обозревателя> Содержимое> Сертификаты> Экспорт (следуя указаниям мастера, я выбрал формат «X.509 в кодировке Base 64 (.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


2

К вашему сведению

Это было бы подходящим решением для устранения следующей ошибки

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

1

Я думаю, вам следует сосредоточить свои усилия после того, как вы дойдете до этого момента:

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>

1

У меня была такая же проблема в моей организации.

После многих попыток я пришел к следующему решению:

  1. Я обратился к системному администратору с просьбой изменить тип аутентификации прокси с Kerberos на NTLM. Не уверен, было ли это обязательным (в этом вопросе я невежественен), но мою заявку одобрили.

  2. После этого я добавляю настройку Git

    git config --global http.proxyauthmethod ntlm

Только после этого я смог клонировать свой репозиторий


1

У меня тоже была такая же проблема, и я попытался решить ее, явно установив для http.proxyAuthMethod значение basic.

После запуска трассировки pcap между моим сервером и прокси-сервером я заметил, что запрос «HTTP CONNECT», отправленный на прокси-сервер во время клона git, все еще не имеет заголовка «Proxy-Authorization», установленного на базовый уровень. Это произошло из-за моей версии 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

Эта проблема возникла несколько дней назад с моими репозиториями Bitbucket. Я смог исправить это, установив удаленный URL-адрес http, а не https.

Я также попытался установить прокси https в командной строке и git config, но это не сработало.

$ 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

Возникла та же проблема при использовании исходного дерева. Причина заключалась в том, что, возможно, отключили системный прокси, пока исходное дерево было открыто. По какой-то причине это было записано в конфигурационный файл проекта. Его можно легко удалить из исходного дерева, выбрав «Настройки» -> «Редактировать файл конфигурации». Просто удалите его там под http


0

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


0

Удаление "@" из пароля сработало для меня, и в любом случае никогда не сохраняйте @ в своем пароле, это вызовет проблемы с maven и дальнейшей установкой

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.