If you work at a company where you need to type in your user id to access sites on the internet and when you want to use git to push to a repository on the internet and it just hangs. This post may help you out.
While git is a nice distributed version control system (dvcs), it was not written for windows. A side effect of this fact is that it does support using proxy servers. But it really only supports using the kinds of proxy servers one would find in environments with non windows machines. So, this is a case, were a little ingenuity goes a long way. I credit Matt Hinze for figuring all of this out. Now it is standard practice when we need to connect to remote git repositories.
In order to make git access repositories on the internet through a windows auth proxy server we need to add a local proxy and configure git to use the local proxy. This local proxy takes care of all the authentication so that git just works with the proxy and the proxy relays the data through the tightly controlled corporate proxy server. Lets look at a diagram of how this works.
The light blue box represents your machine/workstation; the red box is the corporate network; the green box represents the internet. Since git cannot send ntlm credentials to the proxy, the network traffic just dies at the proxy. With the local ntlmmapps proxy, git can communicate to it without having to send the username and password, and the ntlmmapps proxy adds that information so the corporate ntml proxy gets it’s credentials and passes the network traffic through to github.com.
To configure this its pretty simple.
- Download and unzip the ntmlmaps script & install python for windows (15 MB download).
- Open up the server.cfg in notepad and enter the values for your proxy and network.
- PASSWORD: (leave this blank, you can enter it when the proxy starts up)
- LISTEN_PORT:5865 ( remember this number you need it to configure git)
- Open the runserver.bat file in notepad and change the following line from
before: “c:\program files\python\python.exe” main.py
after: C:\Python27python.exe main.py
- run the runserver.bat ( probably need to run it as administrator)
- type in your password
- configure git in a command line.
- git config –global http.proxy http://localhost:58665
Your done, this should now push all the git commands through your local proxy which will authenticate the network calls and pass through the git commands.