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>
Pinei
источник
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
Beaumondo
источник
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

После этого у меня работает

user1989488
источник
1
Вы уверены в команде: «npm config ...», потому что я предполагаю, что это должно быть «git config ...»
Gaurav Lad
2

Ваш пароль кажется неверным. Еще раз проверьте свои учетные данные.

нео китай
источник
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>
Slak
источник
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 был успешным.

надеюсь, это поможет

MarwaneL
источник
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 и дальнейшей установкой

Codiee
источник