Search code examples
windowsgitproxymsysgit

Git error: fatal: unable to connect a socket (Invalid argument)


I've got MSysGit (Git on Windows) working just fine on my home machine, but at work, where we are behind a Microsoft ISA proxy, I get the following error when I do a Git clone:

H:
cd \
git clone git://github.com/akitaonrails/vimfiles.git

Output:

Initialized empty Git repository in H:/vimfiles/.git/
github.com[0: 65.74.177.129]: errno=Invalid argument
fatal: unable to connect a socket (Invalid argument)

I've tried setting the http_proxy environment variable to:

http://our-proxy-server:8088

I've set the Git http.proxy configuration directive:

git config --global http.proxy http://our-proxy-server:8088

Neither of the above makes a difference.

Doing a Git clone with http:// instead of git:// yields this:

H:
cd \
git clone http://github.com/akitaonrails/vimfiles.git

Output:

Initialized empty Git repository in H:/vimfiles/.git/
fatal: http://github.com/akitaonrails/vimfiles.git/info/refs download error - The    requested URL returned error: 407

407 is of course an authentication error.

Is there a way to get Git working from behind a proxy, specifically an ISA proxy? I don't know if it's going to be worth pursing this.


Solution

  • I had the exact same error; but the ~/.gitconfig global config file was the key.

    If you have a proxy with authentication you need to put in it:

    git config --global http.proxy http://login:password@our-proxy-server:8088
    

    And it just works (with 'git clone http:')

    Example of a blog detailing the same setup: GIT clone over HTTP: who knew?


    If it still fails in 407, it could be related to a problem with git-fetch losing authentication tokens on the second HTTP GET. A more recent version of libcurl might be needed.


    Update January 2011: jbustamovej mentions in his answer (upvoted) his blog post "GitHub Behind Corporate Proxy", which adds this:

    It’s important to note that if your login has a backslash, as in domain\login, you must escape the backslash, as in:

    git config --global http.proxy http://domain\\\login:password@our-proxy-server:8088