Como faço para o Git usar um servidor proxy?
Eu preciso fazer o check-out do código de um servidor Git, mas ele mostra "Solicitação expirada" todas as vezes. Como contornar isso?
Como alternativa, como posso definir um servidor proxy?
Como faço para o Git usar um servidor proxy?
Eu preciso fazer o check-out do código de um servidor Git, mas ele mostra "Solicitação expirada" todas as vezes. Como contornar isso?
Como alternativa, como posso definir um servidor proxy?
Respostas:
Comando a usar:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
proxyuser
para seu usuário proxyproxypwd
para sua senha de proxyproxy.server.com
para o URL do seu servidor proxy8080
para a porta proxy configurada no seu servidor proxyObserve que isso funciona para repositórios http e https.
Se você decidir a qualquer momento redefinir esse proxy e funcionar sem ele:
Comando a usar:
git config --global --unset http.proxy
Por fim, para verificar o proxy atualmente definido:
git config --global --get http.proxy
%40
como um substituto para a @
string in username / password, embora eu não tenha testado isso sozinho. Espero que ajude. :-)
Isso funcionou para mim, no Windows XP, atrás de um firewall corporativo.
Não precisei instalar nenhum proxy local ou qualquer outro software além do git v1.771 em http://code.google.com/p/msysgit/downloads/list?can=3
$ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
$ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
$ git remote add origin https://mygithubuser:mygithubpwd@github.com/repoUser/repoName.git
$ git push origin master
proxyuser = o usuário proxy que me foi designado pelo departamento de TI; no meu caso, é o mesmo usuário do Windows que eu uso para fazer login no meu PC, o usuário do Active Directory
proxypwd = a senha do meu usuário proxy
proxy.server.com:8080 = o nome e a porta do proxy, obtive-o no Painel de Controle, Opções da Internet, Conexões, botão Configurações da LAN, botão Avançado na seção Servidor Proxy, use o nome do servidor e a porta na primeira linha (http) .
mygithubuser = o usuário que eu uso para fazer login no github.com
mygithubpwd = a senha do meu usuário do github.com
repoUser = o proprietário do usuário do repo
repoName = o nome do repo
git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crt
mais certificados baixados conforme descrito em simplicidade.org/notes/archives/2011/06/… (graças a: stackoverflow.com/a/7206627/98528 ) fizeram isso por mim!
git://
protocolo.
Defina uma variável do sistema nomeada http_proxy
com o valor de ProxyServer:Port
. Essa é a solução mais simples. Respectivamente, use https_proxy
como daefu apontado nos comentários.
Definir gitproxy (como menciona sleske) é outra opção, mas isso requer um "comando", que não é tão simples quanto a solução acima.
Referências: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html
http_proxy
é necessário para URLs HTTP e https_proxy
é necessário para URLs HTTPS. Como alternativa, é possível definir apenas all_proxy
para todos os URLs. Veja a ENVIRONMENT
seção em curl (1) . No entanto, ao definir as opções do git-config, http.proxy
é usado para URLs HTTP e HTTPS. Veja http.proxy
em git-config (1) .
Se a maneira da linha de comando de configurar seu servidor proxy não funcionar, provavelmente você pode editar .gitconfig (na raiz do seu perfil, que pode estar oculto em C: \ Documents and Settings e em alguma unidade de rede) e adicioná-lo :
[http]
proxy = http://username:password@proxy.at.your.org:8080
YMMV, porém, isso cobre apenas a primeira etapa da configuração da linha de comando. Talvez você precise editar a configuração do sistema git e não faço ideia de onde eles ocultaram isso.
Como alternativa ao uso git config --global http.proxy address:port
, você pode definir o proxy na linha de comando:
git -c "http.proxy=address:port" clone https://...
A vantagem é que o proxy não está definido persistentemente. Em Bash, você pode definir um alias:
alias git-proxy='git -c "http.proxy=address:port"'
Se você estiver usando o ubuntu, faça o seguinte ...
Etapa 1: instalar o saca-rolhas
$ sudo apt-get install corkscrew
Etapa 2: escreva um script chamado git-proxy.sh e adicione o seguinte
#!/bin/sh
exec corkscrew <name of proxy server> <port> $*
# <name_of_proxy_server> and <port> are the ip address and port of the server
# e.g. exec corkscrew 192.168.0.1 808 $*
Etapa 3: Tornar o Script Executável
$ chmod +x git-proxy.sh
Etapa 4: configurar o comando proxy para GIT, configurando a variável de ambiente
$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"
Agora use os comandos git, como
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
"$@"
vez de $*
. Veja o manual do seu shell para mais detalhes.
Enfrentou o mesmo problema por causa de vários .gitconfig
arquivos no Windows, seguidos abaixo das etapas para corrigir o mesmo:
Etapa 1: abra o Git BASH
Etapa 2: procure .gitconfig
, executando o seguinte comando:
git config --list --global --show-origin
Etapa 3: copie o conteúdo abaixo em .gitconfig
:
[http]
proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
sslverify = false
[https]
proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
sslverify = false
[url "http://github.com/"]
insteadOf = git://github.com/
[user]
name = Arpit Aggarwal
email = aggarwalarpit.89@gmail.com
Tente colocar o seguinte no arquivo ~ / .gitconfig:
[http]
proxy = http://proxy:8080
[https]
proxy = http://proxy:8080
[url "https://"]
insteadOf = git://
Para o protocolo git (git: // ...), instale o socat e escreva um script como:
#!/bin/sh
exec socat - socks4:your.company.com:$1:$2
torne-o executável, coloque-o no seu caminho e no seu ~/.gitconfig
conjunto core.gitproxy
com o nome desse script.
socat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
set GIT_PROXY_COMMAND=path\to\script
para fazer o GIT usar o proxy sem mexer na configuração do git.
Há algo que eu notei e quero compartilhar aqui:
git config --global http.proxy http://<proxy address>:<port number>
O método acima não funcionará para URLs ssh (ou seja, git@github.com:<user name>/<project name>.git
):
git clone git@github.com:<user name>/<project name>.git // will not use the http proxy
E as coisas não mudarão se definirmos o SSH na porta HTTPS ( https://help.github.com/en/articles/using-ssh-over-the-https-port ) porque ela altera apenas a porta (22 por padrão ) à qual a conexão ssh se conecta.
(Não é um falante nativo de inglês, refine minhas palavras, se necessário)
Eu trabalho no Windows XP no trabalho (state / gov), então fiz minha pesquisa e encontrei isso aqui e funcionou para mim. Espero que isto ajude :)
A variável de ambiente http_proxy
Se você usa um servidor proxy ou firewall, pode ser necessário definir a variável de ambiente http_proxy para acessar alguns URLs da linha de comando. Exemplo: Instalando o ppm para perl ou aplicando o rpm no linux, atualizando o ubuntu
Defina a variável http_proxy com o nome do host ou o endereço IP do servidor proxy: http_proxy = http: // [proxy.example.org]
Se o servidor proxy exigir um nome de usuário e senha, inclua-os no seguinte formato: http_proxy = http: // [nome de usuário: password@proxy.example.org]
Se o servidor proxy usar uma porta diferente de 80, inclua o número da porta: http_proxy = http: // [nome do usuário: senha@proxy.example.org: 8080]
Windows XP
- Abra o Painel de Controle e clique no ícone Sistema.
- Na guia Avançado, clique em Variáveis de ambiente.
- Clique em Novo no painel Variáveis do sistema.
- Adicione http_proxy com as informações de proxy apropriadas (veja os exemplos acima).
Linux, Solaris ou HP-UX
Defina a variável de ambiente http_proxy usando o comando específico para seu shell (por exemplo, definir ou exportar). Para tornar essa alteração persistente, adicione o comando ao arquivo de perfil apropriado para o shell. Por exemplo, no bash, adicione uma linha como a seguinte ao seu arquivo .bash_profile ou .bashrc:
- http_proxy = http: // [nome do usuário: senha @ nome do host: porta];
- exportar $ http_proxy
Além dessas respostas, achei útil considerar estes 2 pontos:
Pode ser necessário impor um esquema de autenticação:
[http]
# https://github.com/git/git/blob/master/Documentation/config.txt
proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm
Além disso, normalmente com o esquema de autenticação NTLM, pode ser necessário fornecer explicitamente o domínio do AD.
No git bash:
echo %userdomain%
E atualize o http.proxy adequadamente:
git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080
De qualquer forma, a investigação pode ser ajudada adicionando logs CURL:
export GIT_CURL_VERBOSE=1
git config --global http.proxyAuthMethod basic
. O Git gersion 2.8.3 não enviou nenhuma autenticação até definir esse parâmetro de configuração.
Se você tiver tsocks ou proxychains instalados e configurados, poderá
$ tsocks git clone <you_repository>
ou
$ proxychains git clone <you_repository>
para torná-lo mais curto, criei um link de símbolo /usr/bin/p
para proxychains
que eu possa usá-lo assim
p git clone <you_repository>
e posso usá-lo para fazer proxy de qualquer comando,
p <cmd-need-be-proxied>
a propósito, proxychains não é atualizado por um longo tempo, você pode querer tentar proxychians-ng
Configurando o proxy git no terminal
E se
Defina globalmente uma vez
git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_url:proxy_port
se você deseja definir proxy para apenas um projeto git (pode haver algumas situações em que você não queira usar o mesmo proxy ou qualquer proxy para algumas conexões git)
//go to project root
cd /bla_bla/project_root
//set proxy for both http and https
git config http.proxy username:password@proxy_url:proxy_port
git config https.proxy username:password@proxy_url:proxy_port
se você deseja exibir as configurações atuais de proxy
git config --list
se você deseja remover o proxy globalmente
git config --global --unset http.proxy
git config --global --unset https.proxy
se você deseja remover o proxy para apenas uma raiz git
//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy
aqui está a configuração de proxy
git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>
Eu segui a maioria das respostas recomendadas aqui. Primeiro, recebi o seguinte erro:
fatal: não é possível acessar ' https://github.com/folder/sample.git/ ': schannel: next InitializeSecurityContext falhou: erro desconhecido (0x80092012) - A função de revogação não pôde verificar a revogação do certificado.
Então eu tentei o seguinte comando por @Salim Hamidi
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
Mas eu recebi o seguinte erro:
fatal: não é possível acessar ' https://github.com/folder/sample.git/ ': código HTTP 407 recebido do proxy após CONNECT
Isso pode acontecer se o servidor proxy não puder verificar o certificado SSL. Portanto, queremos garantir que a verificação SSL esteja desativada (não recomendada para sites não confiáveis). Por isso, realizei as seguintes etapas, recomendadas pelo @Arpit, mas com pequenas alterações:
1.Primeiro, certifique-se de remover as configurações de proxy anteriores:
git config --global --unset http.proxy
2.Em seguida, liste e obtenha o conteúdo do gitconfig
git config --list --show-origin
3.Última atualização do conteúdo do arquivo gitconfig como abaixo:
[http]
sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = schannel
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false
[https]
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false
Eu tentei todas as respostas acima e nada funcionou para mim, pois houve um problema de codificação de senha de proxy.
Este comando funcionou:
git config --global http.proxy http://username@proxy.example.com:PortNumber
Não digite a senha no seu comando. Ele solicitará dinamicamente quando você tentar se conectar a qualquer repositório git.
Para usuários do Windows: se git config
ou set http_proxy=
não funcionar, esta resposta pode ajudar:
substitua o git://
protocolo do repositório git por http://
. Observe que você precisará definir o http_proxy
primeiro.
Depois de tentar incansavelmente todas as soluções desta página, minha solução foi usar a chave SSH!