Getting Git to work with a proxy server - fails with "Request timed out"

Viewed 1211141

How do I get Git to use a proxy server?

I need to check out code from a Git server, but it shows "Request timed out" every time. How do I get around this?

Alternatively, how can I set a proxy server?

20 Answers

As an alternative to using git config --global http.proxy address:port, you can set the proxy on the command line:

git -c "http.proxy=address:port" clone https://...

The advantage is the proxy is not persistently set. Under Bash you might set an alias:

alias git-proxy='git -c "http.proxy=address:port"'

There's something I noticed and want to share here:

git config --global http.proxy http://<proxy address>:<port number>

The method above will not work for SSH URLs (i.e., git@github.com:<user name>/<project name>.git):

git clone git@github.com:<user name>/<project name>.git // will not use the http proxy

And things will not change if we set SSH over the HTTPS port (https://help.github.com/en/articles/using-ssh-over-the-https-port) because it only changes the port (22 by default) the SSH connection connects to.

In addition of thse answers, I found helpful to consider these 2 points:

One may need to enforce an authentication scheme:

[http]
    # https://github.com/git/git/blob/master/Documentation/config.txt
    proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm

Also, typically with NTLM authentication schema, one may need to provide explicitely the AD domain.

In git bash:

echo %userdomain%

And update the http.proxy accordingly:

git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080

Anyway, investigation may be helped by adding CURL logs:

export GIT_CURL_VERBOSE=1

If you have tsocks or proxychains installed and configured, you can

$ tsocks git clone <you_repository>

or

$ proxychains git clone <you_repository>

to make it shorter, I created a symbol link /usr/bin/p for proxychains, so I can use it like this

p git clone <you_repository>

and I can use it to proxy any command,

p <cmd-need-be-proxied>

by the way, proxychains is not updated for a long time, you may wanna try proxychians-ng

I followed the most of the answers which was recommended here. First I got the following error:

fatal: unable to access 'https://github.com/folder/sample.git/': schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - The revocation function was unable to check revocation for the certificate.

Then I have tried the following command by @Salim Hamidi

git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080

But I got the following error:

fatal: unable to access 'https://github.com/folder/sample.git/': Received HTTP code 407 from proxy after CONNECT

This could happen if the proxy server can't verify the SSL certificate. So we want to make sure that the ssl verification is off (not recommended for non trusted sites), so I have done the following steps which was recommended by @Arpit but with slight changes:

1.First make sure to remove any previous proxy settings:

git config --global --unset http.proxy

2.Then list and get the gitconfig content

git config --list --show-origin

3.Last update the content of the gitconfig file as below:

[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

I have tried all the above answers and nothing worked for me, as there was a proxy password encoding issues.

This command worked:

git config --global http.proxy http://username@proxy.example.com:PortNumber 

Do not enter the password in your command. It will dynamically ask for when you try to connect to any git repo.

After tirelessly trying every solution on this page, my work around was to use and SSH key instead!

  1. Open Git Bash
  2. $ ssh-keygen.exe -t rsa -C
  3. Open your Git provider (Github, Bitbucket, etc.)
  4. Add copy the id_rsa.pub file contents into Git provider's input page (check your profile)

an alternative to using a proxy is to use SSH In the git configs, configure the origin remote on the ssh address.Then use the ssh-keygen command, which gives you a public key that you can set in your GitLab or Gitab account settings and login accordingly done...

1-verify which remotes are using by running git remote -v in your Git client.

2-if this is http(s) url ,changed it to ssh address , run: git remote set-url <remote name, e.g. origin> <new SSH URL> for example

git remote set-url git@gitlab.com:example/myproject.git

3-to generate ssh key for login ,run : ssh-keygen -o, this command generate public(id_rsa.pub file) and private keys.

4-copy public key contents. (from id_rsa.pub file)

5-go to gitlab/githup/.... profile section > setting/ssh-key . create new ssh key and paste public key contents

Related