177 votes

Git - Comment utiliser le fichier .netrc sous Windows pour sauvegarder l'utilisateur et le mot de passe ?

Est-il possible d'utiliser un fichier .netrc sous Windows lorsque j'utilise Git pour cloner un dépôt distant avec HTTP et utilisateur - mot de passe ?

211voto

VonC Points 414372

Est-il possible d'utiliser un .netrc sous Windows ?

Oui : vous devez :

  • définir une variable d'environnement %HOME% (pré-Git 2.0, plus nécessaire avec Git 2.0+)
  • mettre un _netrc dans %HOME%

Si vous utilisez Windows 7/10, dans une CMD session, type :

setx HOME %USERPROFILE%

et le %HOME% sera réglé sur ' C:\Users\"username" '.
Allez dans ce dossier ( cd %HOME% ) et créez un fichier appelé ' _netrc '

Note : Encore une fois, pour Windows, vous avez besoin d'un ' _netrc Fichier ", pas a ' .netrc Fichier ".

Son contenu est assez standard (remplacer le <examples> avec vos valeurs) :

machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>

Luke dans les commentaires :

En utilisant la dernière version de msysgit sous Windows 7, je n'ai pas eu besoin de configurer l'attribut HOME variable d'environnement. Le site _netrc Le fichier seul a fait l'affaire.

C'est en effet ce que j'ai mentionné dans " Essayer de " install " github, .ssh dir pas là " :
git-cmd.bat incluse dans msysgit définit l'option %HOME% variable d'environnement :

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%

爱国者 croit dans les commentaires que "il semble que cela ne fonctionnera pas pour le protocole http".

Cependant, j'ai répondu que netrc est utilisé par curl et fonctionne pour le protocole HTTP, comme le montre l'exemple suivant cet exemple (cherchez ' netrc dans la page) : . Utilisé également avec le protocole HTTP ici : " _netrc / .netrc alternative à cURL ".


Un piège commun avec avec netrc sous Windows est que git ne l'utilisera pas si une url https d'origine spécifie un nom d'utilisateur.

Par exemple, si votre .git/config contient :

\[remote "origin"\]
     fetch = +refs/heads/\*:refs/remotes/origin/\*
     url = https://bob@code.google.com/p/my-project/

Git ne résoudra pas vos informations d'identification par l'intermédiaire de _netrc Pour résoudre ce problème, supprimez votre nom d'utilisateur, comme suit :

\[remote "origin"\]
     fetch = +refs/heads/\*:refs/remotes/origin/\*
     url = https://code.google.com/p/my-project/

Solution alternative : Avec Version git 1.7.9+. (janvier 2012) : Cette réponse de Mark Longair détaille le mécanisme de cache des justificatifs d'identité dont également vous permet de pas stockez votre mot de passe en texte clair comme indiqué ci-dessous.


Avec Git 1.8.3 (avril 2013) :

Vous pouvez maintenant utiliser un .netrc crypté (avec gpg ).
Sous Windows : %HOME%/_netrc ( _ et non . ')

A nouvelle aide d'accréditation en lecture seule (en contrib/ ) pour interagir avec le .netrc/.authinfo a été ajouté.

Ce script vous permettra de utiliser les fichiers netrc chiffrés par gpg ce qui permet d'éviter que vos informations d'identification ne soient stockées dans un fichier texte brut.

Les fichiers avec le .gpg sera décryptée par GPG avant d'être analysée.
Multiple -f sont acceptés. Ils sont traités dans l'ordre, et la première entrée correspondante trouvée est renvoyée via le protocole d'aide à l'accréditation.

Quand aucun -f est donnée, .authinfo.gpg , .netrc.gpg , .authinfo et .netrc dans votre répertoire personnel sont utilisés dans cet ordre.

Pour activer cet assistant d'accréditation :

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'

(Notez que Git ajoutera en préambule " git-credential- " au nom de l'aide et le rechercher dans le chemin).

# and if you want lots of debugging info:
git config credential.helper '$shortname -f AUTHFILE -d'

#or to see the files opened and data found:
git config credential.helper '$shortname -f AUTHFILE -v'

Voir un exemple complet sur " Existe-t-il un moyen de ne pas avoir à taper le mot de passe lorsque l'on utilise l'application https:// github "


Avec Git 2.18+ (juin 2018), vous pouvez désormais personnaliser le programme GPG utilisé pour décrypter le chiffré. .netrc fichier.

Voir commit 786ef50 , commettre f07eeed (12 mai 2018) par Luis Marsano (``) .
(fusionné par Junio C Hamano -- gitster -- en commettre 017b7c5 , 30 mai 2018)

git-credential-netrc : accepter gpg option

git-credential-netrc était codé en dur pour être décrypté avec ' gpg indépendamment de l'option gpg.program.
C'est un problÃ?me sur les distributions comme Debian qui appellent GnuPG moderne autrement, comme ' gpg2 '

0 votes

@Luke : oui, le git-cmd.bat incluse dans msysgit définit l'option %HOME% comme je l'ai mentionné en décembre dernier : stackoverflow.com/questions/8514097/

0 votes

@ netrc est utilisé par curl et travaille pour http comme le montre cet exemple (cherchez ' '). netrc dans la page) : maymay.net/blog/2008/08/08/ . Également utilisé avec le protocole http ici : stackoverflow.com/questions/5193643/

0 votes

@VonC Je viens d'ajouter un autre piège que Marc et moi avons touché au fond.

35voto

KindDragon Points 1656

Vous pouvez également installer Gestionnaire d'accréditation Git pour Windows pour sauvegarder les mots de passe de Git dans le gestionnaire d'identifiants de Windows au lieu de _netrc . Il s'agit d'un moyen plus sûr de stocker les mots de passe.

8 votes

Excellente réponse, c'est la seule réponse que j'ai trouvée qui me permet de conserver la simplicité du nom d'utilisateur/mot de passe (en toute sécurité) sans avoir à gérer toutes ces conneries de SSH.

0 votes

@KirkWoll voir ma réponse mise à jour ci-dessus : vous pouvez maintenant stocker vos informations d'identification dans un fichier crypté. .netrc fichier. Vous n'aurez pas à saisir ces informations d'identification une seule fois pendant la session.

11voto

EBlake Points 461

Cela permettra à Git de s'authentifier sur HTTPS à l'aide des éléments suivants .netrc :

  • Le fichier doit être nommé _netrc et situé à c:\Users\<username> .
  • Vous devrez définir une variable d'environnement appelée HOME=%USERPROFILE% (définir les variables d'environnement du système en utilisant l'option Système du panneau de configuration. Selon la version de Windows, vous devrez peut-être sélectionner "Options avancées").
  • Le mot de passe stocké dans le _netrc ne peut pas contenir d'espaces (le fait de citer le mot de passe ne fonctionnera pas).

0 votes

La solution la plus simple et la meilleure. Fonctionne comme un charme avec Android Studio, Source Tree et la ligne de commande Git. J'ai dû l'utiliser lorsque l'option credential.helper recommandée par Google Cloud SDK a échoué et que j'ai dû générer manuellement les informations d'identification et les utiliser avec le fichier net rc. Dans mon cas, je n'avais pas besoin des options 2 et 3.

0voto

BO.LI Points 185

J'affiche un moyen d'utiliser _netrc de télécharger des documents à partir du site www.course.com.

Si quelqu'un utilise le coursera-dl pour télécharger le matériel de la classe ouverte sur www.coursera.com, et que sur le système d'exploitation Windows quelqu'un veut utiliser un fichier comme ".netrc" qui est dans le système d'exploitation Unix pour ajouter l'option -n au lieu de -U <username> -P <password> pour plus de commodité. Il/elle peut le faire comme ça :

  1. Vérifiez le chemin d'accès au système d'exploitation Windows : setx HOME %USERPROFILE% (voir La réponse de VonC ). Cela permettra de sauvegarder le HOME en tant que variable d'environnement C:\Users\"username" .

  2. Localisez dans le répertoire C:\Users\"username" et créer un nom de fichier _netrc . NOTE : il n'y a PAS de suffixe. le contenu est comme : machine coursera-dl login <user> password <pass>

  3. Utilisez une commande comme coursera-dl -n --path PATH <course name> pour télécharger le matériel de cours. Plus de détails sur les options de coursera-dl pour cette page .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X