Search code examples
gitproxygithubcygwin

How to set up Git to get through a proxy


I want to connect to GitHub at work and need to get through the http proxy. I am able to get out for FTP using cURL using the command

curl -v -g --ftp-pasv --upload-file MYFILE --proxy PROXYADDRESS:PROXYPORT --proxy-ntlm --proxy-user WINDOWSDOMAIN\WINDOWSUSER:WINDOWSPASSWORD ftp://FTPUSER:FTPPASS@FTPURL/

I've so far not been able to provide equivalent settings for Git.

I tried following instructions on Using Github Through Draconian Proxies under cygwin.

I've got corkscrew installed and tried to SSH to GitHub

ssh github.com

or

ssh ssh.github.com

I get back

ssh: Could not resolve hostname ssh.github.com: hostname nor servname provided, or not known.

I've tried setting the http and https proxy.

Here is the output from git --config -l

core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files/Git/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
user.name=Peter Wilkinson
[email protected]
github.user=ProggerPete
github.token=shouldprobablykeepthissecret
http.proxy=http://somedomain\someuser:[email protected]:80
https.proxy=http://somedomain\someuser:[email protected]:80

I've also run

export https_proxy=http://somedomain\someuser:[email protected]:80
export http_proxy=http://somedomain\someuser:[email protected]:80
set https_proxy=http://somedomain\someuser:[email protected]:80
set http_proxy=http://somedomain\someuser:[email protected]:80

I then try and clone and get.

$ git clone https://[email protected]/project/JavaScript-Maven-Plugin.git
Cloning into JavaScript-Maven-Plugin...
Password:
error: The requested URL returned error: 407 while accessing https://ProggerPet
@github.com/project/JavaScript-Maven-Plugin.git/info/refs

fatal: HTTP request failed

This looks to me like I'm failing authentication with the proxy. However I'm using the same login and pass that works for FTP via cURL.

How can I get connected?


Solution

  • After much head bashing I finally stumbled across http://cntlm.sourceforge.net/. It's a proxy proxy that understands ntlm authentication.

    I installed it and told it about the http proxy. Then pointed git at CNTLM and it all started working.

    I found getting this going very frustrating so hopefully this will help someone else in the same situation.