How to set up Git to get through a proxy

83,205

Solution 1

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.

Solution 2

I usually only need to set:

set http_proxy=http://<login_internet>:<password_internet>@aproxy:aport
set https_proxy=http://<login_internet>:<password_internet>@aproxy:aport

(note the https_proxy refers to the same http, not https, proxy address)

See also "Cannot get Http on git to work".

Solution 3

You can put proxy information in your ~/.curlrc:

/home/usr/.curlrc

proxy = proxy.proxyhost.com:8443
proxy-user = user:pass
proxy-ntlm = true
noproxy = localhost,127.0.0.1,intraweb.company.com

Solution 4

You are unlikely to be able to get ssh to github tunnelled through your proxy. However as github provides https urls for all their repositories and you can push to that you don't need ssh. If you already have a repository checked out, you can change the url used with

git remote set-url origin https://github.com/project/repo.git
git remote set-url --push origin https://[email protected]/project/repo.git

(skip the second line if you do not need push access). This, along with setting the environment variables (https_proxy) as mentioned by VonC will enable access via your proxy.

Share:
83,205
Programming Guy
Author by

Programming Guy

Updated on November 14, 2020

Comments

  • Programming Guy
    Programming Guy over 3 years

    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?