I'm using Git on Windows, on a corporate network where I'm behind an HTTP proxy with Basic authentication. Outbound SSH doesn't work, so I have to use HTTPS through the proxy.
I'm aware of how to use git config http.proxy
to configure the settings as http://[username]:[password]@[proxy]:[port]
.
However, particularly as this is a shared machine, I'd rather not store my password in my .gitconfig
. Additionally, changing my .gitconfig
using the git config
command leaves my password in my bash history, so even if I remember to clear my .gitconfig
at the end of the session, I'll almost certainly forget to clear my history as well.
I've tried setting http.proxy
without a password, in the vain hope that I'd get a prompt asking me for my password when I try to push/pull, but I only get a 407 Proxy Authentication Required. All the information I've found online seems to either ignore the issues with having the password saved in plaintext in .gitconfig
, or deals with NTLM proxies.
I'm quite happy to type my proxy details every time I need to connect - the best solution I can see at the moment is writing a wrapper script that will prompt for my password and set that as an environment variable when calling git
proper. Is this a decent solution, and are there any security implications to setting an environment variable for a single call in a script? Preferably, are there any built-in settings or existing tools that I can use for this?
Instead of using git setting, you can also use environment variable (that you can set just for your session), as described in this answer:
set http_proxy=http://username:password@proxydomain:port
set https_proxy=http://username:password@proxydomain:port
set no_proxy=localhost,.my.company
So your wrapper script could, instead of modifying the .gitconfig
(and leaving your password in plain text) set environment variables on demand, just for your current session.
since git 2.8.0
git config --global http.proxy http://[user]@proxyhost:port
git config --global credential.helper wincred
VonC's answer doesn't always solve the problem. I don't know why, but it may depend on the proxy server - or maybe it's some other issue alltogether?
It may help to replace the git://
protocol of the repository with http://
.
Note: As in VonC's answer, you'll have to setup the http(s)_proxy
environment variables first:
set http_proxy=http://username:password@proxydomain:port
set https_proxy=http://username:password@proxydomain:port
For example, clone marble's stable git would usually be cloned like this (from the marble documentation):
git clone -b Applications/15.12 git://anongit.kde.org/marble ~/marble/sources
In windows' cmd
(assuming http_proxy
has been set), you may then have to use http[s]://
instead:
git clone -b Applications/15.12 http://anongit.kde.org/marble ~/marble/sources
If you are behind Proxy server, follow this.
Make sure port 9418 is excluded from your firewall rules.Ask network administrator
Unset Proxy if it is already set:
- git config --global --unset http.proxy
- git config --global --unset https.proxy
Set the proper Proxy:
- git config --global http.proxy http://username:password@proxydomain:port
- git config --global https.proxy http://username:password@proxydomain:port
Common Errors:
- 502: URL/IP is unreachable from your network.
- 407: Proxy authentication Denied.
- 80 : Proxy has not been set properly.