git retorna erro http 407 do proxy após CONNECT

95

Eu tenho um problema ao conectar ao github do meu PC, usando o git. Sistema Win 7.

Tenho conexão por proxy, então especifiquei nos arquivos de configuração git (na pasta git geral e na pasta repo git). Para fazer isso, digitei a próxima linha no meu git bush:

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

A maneira como funciona em outros programas (ex: maven) é assim:

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

Mas quando tento fazer push ou clonar meu repo, recebo

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

Já tento inserir não apenas meu nome de usuário, mas domínio \ nome de usuário, mudei minha senha caso haja problemas com as tabelas de linguagem de código. E eu até digitei a senha errada. O erro permaneceu o mesmo.

Quando entrei em '10 .65.64.177.com 'e tentei enviar o repo, recebi:

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

Só não sei o que tentar.

Olga Chernyavskaya
fonte
Duplicado de stackoverflow.com/questions/8561671 ? Veja minha resposta lá sobre proxy https.
thinkOfaNumber
1
Eu estava tendo o mesmo problema depois de atualizar minha senha do Windows em um ambiente AD. Acontece que eu apenas tive que reiniciar meu servidor proxy (cntlm).
Aaron C

Respostas:

84

O que funcionou para mim é algo semelhante ao que rohitmohta está propondo; no prompt de comando normal do DOS (não no git bash):

primeiro

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

e em alguns casos também

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

então

git config --global http.sslVerify false

(Eu confirmo que é necessário: se definido como verdadeiro, obter o erro "Problema com o certificado SSL: não é possível obter o certificado do emissor local")

no meu caso, não há necessidade de definir a variável all_proxy

e finalmente

git clone https://github.com/someUser/someRepo.git
Vincent F
fonte
1
Não precisei de "git config --global http.sslVerify false", mas isso provavelmente depende da configuração do proxy.
anre
1
Esta resposta está funcionando e deve ser marcada como correta.
Nadeem Iqbal
Precisava fazer isso no git bash e não no DOS para mim. Percebi que o DOS não fez nada! ie. verifique fazendo: git config --global -l
theQuestionMan
Em que a resposta git config --global http.proxy http://username:password@proxiURL:proxiPortdifere da pergunta git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>além de ser menos correta, porque é necessário especificar o host proxy , não a URL ?
Michel Jung
Funciona
perfeitamente
37

Eu tive que configurar todos os 4 coisas em .gitconfigcom:

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

Só então a clonagem foi bem-sucedida.

Miroslav Mocek
fonte
Tentei todas as opções mencionadas aqui e ainda não está funcionando para mim. :(
Xavier Geoffrey
Por que diabos todos estão propondo contornar a verificação SSL ?? ISSO É INSEGURO e pode comprometer o seu sistema!
flederwiesel
3
@flederwiesel Porque os proxies corporativos são perversos e causam todos os tipos de estupidez - como ter que armazenar suas credenciais de domínio em texto não criptografado em meia dúzia de lugares para que você possa realmente acessar os recursos com proxy. E forçando o uso de certificados raiz não seguros emitidos pela empresa - ou ignorando / ignorando completamente a verificação SSL. É muito triste.
ggranum
36

Talvez você já esteja usando a configuração de proxy do sistema - neste caso, remover a configuração de todos os proxies git funcionará:

git config --global --unset http.proxy
git config --global --unset https.proxy
rekinyz
fonte
1
Isso pelo menos evitou que o erro aparecesse e gerou um prompt de nome de usuário / senha. Parece que o cliente git às vezes está configurando incorretamente o proxy por padrão. Eu tive o mesmo erro ao usar SourceTree da Atlassian.
Kelly S. French
Isso resolveu o problema para mim no Ubuntu 14.04 depois de muito coçar a cabeça!
Tim Ebenezer
2
Isso também resolveu para mim ao usar SourceTree, obrigado.
TomSW de
Eu estava recebendo este erro ao tentar instalar o homebrew ... isso resolveu meu problema. Obrigado.
joeCarpenter
Obrigado, esta é a única coisa que funcionou para mim ao trabalhar de um local remoto através do túnel VPN.
Matt de
34

O seguinte comando é necessário para forçar o git a enviar as credenciais e o método de autenticação ao proxy:

git config --global http.proxyAuthMethod 'basic'

Fonte: https://git-scm.com/docs/git-config#git-config-httpproxyAuthMethod

Marijus Ravickas
fonte
2
Isso foi o que funcionou para mim no passado! depois de definir o proxy no arquivo de configuração.
Dhanesh KM
3
Essa também era a peça que faltava para mim. Obrigado. (Normalmente não esbarro com comentários do tipo 'eu também', mas essa resposta é muito difícil e precisa de mais amor).
ggranum
Isso é exatamente o que estava faltando!
ivspenna
Isso acabou sendo a única opção de configuração do git que eu precisava, pois minha variável de ambiente https_proxy foi definida em / etc / environment.
Rakurai
Isso funcionou para mim, mas sem ticks únicos
DeEgge
18

Eu havia enfrentado um problema semelhante, por trás de um firewall corporativo. Fiz o seguinte e consegui clonar o repositório usando git shell do meu sistema executando o Windows 7 SP1.

  1. Defina a variável de ambiente 'all_proxy' para seu usuário. Requerido por curl.

    export all_proxy=http://DOMAIN\proxyuser:[email protected]:8080
    
  2. Defina a variável de ambiente 'https_proxy' para seu usuário. Requerido por curl.

    export https_proxy=http://DOMAIN\proxyuser:[email protected]:8080
    
  3. Não tenho certeza se isso tem algum impacto. Mas eu fiz isso e funcionou:

    git config --global http.sslverify false
    
  4. Use https: // para clonagem

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

Nota-1: não use http: //. Usar isso pode gerar o erro abaixo. Isso pode ser resolvido usando https: //.

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

Nota 2: Evite ter @ em sua senha. Pode usar $ embora.

Rohitmohta
fonte
Você pode usar https_proxy = DOMAIN \ "proxyuser: proxypwd" @ proxy.server.com: 8080 com aspas duplas e ter uma @senha.
Vadorequest
1
Eu sei que há um truque usando aspas "em torno login:password. Mas eu realmente tentei e git ignorei as aspas, então a @bagunça na senha. Se alguém tiver uma solução alternativa, acho que vale a pena mencioná-la.
Vadorequest
1
Eu tentei todos os comandos sugeridos acima, mas depois disso comecei a obter o código HTTP recebido 407 do proxy após CONNECT.
user130934
1
Você pode codificar em URL qualquer caractere especial. Por exemplo, @ se torna% 40. meyerweb.com/eric/tools/dencoder
Bryant
6

Eu tive o mesmo problema em um ambiente Windows.

Acabei de resolver com NTLM-APS (um servidor proxy de autenticação do Windows NT)

Configure seu proxy NTML e defina Git para ele:

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

Tive o erro 407 do Android Studio. Tentei adicionar o proxy, mas nada aconteceu. Descobri que era relacionado ao certificado da empresa, então exportei o do meu navegador e o adicionei ao Git.

Exportar do navegador da web

Opções da Internet> Conteúdo> Certificados> Exportar (Siga o assistente, escolhi o formato "Base 64 codificado X.509 (.CER))

No Git Bash

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

A página a seguir foi útil https://blogs.msdn.microsoft.com/phkelley/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exes-store/

Para adicionar o proxy, como os outros threads que usei

git config --global http.proxy proxy.company.net:8080
git config --global https.proxy proxy.company.net:8080
beaumondo
fonte
1
Eu não sobrescreveria o keystore padrão, "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"mas adicionaria o certificado da sua empresa a ele (talvez em um arquivo separado, conforme descrito no link).
jansohn
3

Eu estava enfrentando o mesmo problema, então primeiro verifiquei meu arquivo npm que defini, verifiquei com este comando: -

npm config get proxy

e descobri que defini o proxy errado e defini meu proxy de desejo da seguinte forma:

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

Depois disso funciona para mim

user1989488
fonte
1
Você tem certeza sobre o comando: "npm config ...", porque eu acho que deveria ser "git config ..."
Gaurav Lad
2

Sua senha parece estar incorreta. Verifique novamente suas credenciais.

neo china
fonte
1

Eu tive o mesmo problema na minha organização.

Depois de muitas tentativas, cheguei à seguinte solução:

  1. Solicitei ao administrador do sistema que mudasse o tipo de autenticação de proxy de Kerberos para NTLM. Não tenho certeza se era obrigatório (sou um ignorante no assunto), mas minha inscrição foi aprovada.

  2. Depois disso, adiciono a configuração Git

    git config --global http.proxyauthmethod ntlm

Só depois disso eu fui capaz de clonar meu repositório

Кирилл Захаров
fonte
1

Eu também tive o mesmo problema e tentei resolvê-lo definindo explicitamente o http.proxyAuthMethod como básico.

Depois de executar um rastreamento de pcap entre meu servidor e o proxy, percebi que a solicitação "HTTP CONNECT" enviada ao proxy durante um clone do git ainda não tinha um cabeçalho "Proxy-Authorization" definido como básico. Isso foi devido à minha versão do git "1.8.3.1" que não oferece suporte a http.proxyAuthMethod.

Depois de instalar uma versão mais recente do git (2.16.6), usando os pacotes rpm encontrados aqui " https://repo.ius.io/7/x86_64/packages/g/ ", definir http.proxyAuthMethod como básico finalmente teve um efeito no git comportamento e então meu clone git foi bem-sucedido.

Eu espero que isso ajude

marwaneL
fonte
0

Acho que você deve concentrar seus esforços depois de chegar a este ponto:

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

Isso significa que você não se autenticou corretamente com o proxy. Você pode verificar se a senha fornecida nesta etapa está correta?

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

Este problema ocorreu há alguns dias com meus repositórios Bitbucket. Consegui consertá-lo configurando o url remoto para http em vez de https.

Eu também tentei definir proxies https na linha de comando e git config, mas não funcionou.

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

Observe que estamos usando https:

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

Substitua o url https pelo 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
fonte
0

Eu experimentei este erro devido à minha rede corporativa usar um proxy enquanto no local e um segundo proxy (completamente diferente) quando conectado por VPN de fora. Fui originalmente configurado para o proxy local, recebi o erro e tive que atualizar minha configuração para usar o proxy externo alternativo ao trabalhar em outro lugar.

Shawn
fonte
0

Eu tive um problema semelhante e resolvi com as etapas abaixo:

** Adicione detalhes de proxy no 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
fonte
0

Esta configuração funciona na minha configuração:

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

Tive o mesmo problema ao usar a árvore de origem. O motivo foi Talvez alternar o proxy do sistema de ativado para desativado enquanto a árvore de origem estava aberta. Por alguma razão, isso foi escrito no arquivo de configuração de um projeto. Isso pode ser facilmente excluído da árvore de origem em "Configurações" -> "Editar arquivo de configuração". Basta excluí-lo lá em http

Ska
fonte
0

Eu encontrei o mesmo problema ao usar o Git Bash. Quando fiz a mesma coisa no prompt de comando, funcionou perfeitamente.

Daniel
fonte
0

FYI para informações de todos

Esta teria sido uma solução apropriada para resolver o seguinte erro

Received HTTP code 407 from proxy after CONNECT

Portanto, os seguintes comandos devem ser necessários

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

O que geraria a seguinte configuração

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

Remover "@" da senha funcionou para mim e de qualquer forma nunca mantenha @ em sua senha, isso lhe dará problemas com o maven e outras instalações

Codiee
fonte