web-dev-qa-db-fra.com

Utiliser Git sous Windows, derrière un proxy HTTP, sans stocker de mot de passe proxy sur le disque

J'utilise Git sous Windows, sur un réseau d'entreprise où je suis derrière un proxy HTTP avec authentification de base. Le SSH sortant ne fonctionne pas, je dois donc utiliser HTTPS via le proxy.

Je sais comment utiliser git config http.proxy pour configurer les paramètres comme http://[username]:[password]@[proxy]:[port].

Cependant, d'autant plus qu'il s'agit d'une machine partagée, je préfère ne pas stocker mon mot de passe dans mon .gitconfig. De plus, changer mon .gitconfig en utilisant le git config la commande laisse mon mot de passe dans mon historique bash, donc même si je me souviens d'effacer mon .gitconfig à la fin de la session, j'oublierai presque certainement aussi d'effacer mon historique.

J'ai essayé de régler http.proxy sans mot de passe, dans le vain espoir que j'obtiens une invite me demandant mon mot de passe lorsque j'essaie de pousser/tirer, mais je n'obtiens qu'une authentification proxy 407 requise. Toutes les informations que j'ai trouvées en ligne semblent ignorer les problèmes liés à l'enregistrement du mot de passe en texte brut dans .gitconfig, ou traite des proxys NTLM.

Je suis très heureux de taper mes détails de proxy chaque fois que je dois me connecter - la meilleure solution que je puisse voir pour le moment est d'écrire un script wrapper qui demandera mon mot de passe et le définira comme variable d'environnement lors de l'appel de git bon. Est-ce une solution décente et y a-t-il des implications de sécurité à définir une variable d'environnement pour un seul appel dans un script? De préférence, existe-t-il des paramètres intégrés ou des outils existants que je peux utiliser pour cela?

30
ajd

Au lieu d'utiliser le paramètre git, vous pouvez également utiliser la variable d'environnement (que vous pouvez définir uniquement pour votre session), comme décrit dans cette réponse :

set http_proxy=http://username:password@proxydomain:port
set https_proxy=http://username:password@proxydomain:port
set no_proxy=localhost,.my.company 

Ainsi, votre script wrapper pourrait, au lieu de modifier le .gitconfig (et en laissant votre mot de passe en texte brut) définissez les variables d'environnement à la demande, uniquement pour votre session actuelle.

25
VonC

depuis git 2.8.0

git config --global http.proxy http://[user]@proxyhost:port
git config --global credential.helper wincred
29
0xA0

La réponse de VonC ne résout pas toujours le problème. Je ne sais pas pourquoi, mais cela peut dépendre du serveur proxy - ou peut-être que c'est un autre problème ensemble?

Il peut être utile de remplacer le protocole git:// Du référentiel par http://.

Remarque: Comme dans la réponse de VonC, vous devrez d'abord configurer les variables d'environnement http(s)_proxy:

set http_proxy=http://username:password@proxydomain:port
set https_proxy=http://username:password@proxydomain:port

Par exemple, le git stable du clone de marbre serait généralement cloné comme ceci (dans la documentation de marbre ):

git clone -b Applications/15.12 git: //anongit.kde.org/marble ~/marbre/sources

Dans les fenêtres cmd (en supposant que http_proxy A été défini), vous devrez peut-être utiliser http[s]:// À la place:

git clone -b Applications/15.12 http://anongit.kde.org/marble ~/marble/sources
3
DomTomCat