问题
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?
回答1:
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.
回答2:
since git 2.8.0
git config --global http.proxy http://[user]@proxyhost:port
git config --global credential.helper wincred
回答3:
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
回答4:
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.
来源:https://stackoverflow.com/questions/22799825/using-git-on-windows-behind-an-http-proxy-without-storing-proxy-password-on-di