web-dev-qa-db-fra.com

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

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

166
Bernd Klaus

Est-il possible d'utiliser un fichier _.netrc_ sous Windows?

Oui, vous devez:

  • définir la variable d'environnement _%HOME%_ (antérieure à Git 2.0, n'est plus nécessaire avec Git 2.0+)
  • mettre un fichier __netrc_ dans _%HOME%_

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

_setx HOME %USERPROFILE%
_

et le _%HOME%_ sera réglé sur '_C:\Users\"username"_'.
Allez dans ce dossier (_cd %HOME%_) et créez un fichier nommé '__netrc_'

Remarque: Encore une fois, pour Windows, vous avez besoin d'un fichier '__netrc_', et non d'un fichier '_.netrc_'.

Son contenu est assez standard (Remplacez le _<examples>_ par vos valeurs):

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

Luke mentionne dans les commentaires:

En utilisant la dernière version de msysgit sur Windows 7, il n’était pas nécessaire de définir la variable d’environnement HOME. Le fichier __netrc_ seul a fait l'affaire.

C’est bien ce que j’ai mentionné dans " Essayer de" install "github, _.ssh_ dir pas là ":
git-cmd.bat inclus dans msysgit définit la variable d'environnement _%HOME%_:

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

爱国者 croit dans les commentaires qu'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 indiqué dans cet exemple (recherchez "netrc" dans la page):. Également utilisé avec le protocole HTTP ici: " _netrc_/_.netrc_ ALTERNATIVE À cURL ".


Une interruption courante avec un support avec netrc sous Windows est que git l'ignorera si une url https d'origine spécifie un nom d'utilisateur.

Par exemple, si votre fichier _.git/config_ contient:

 [distance "Origine"] 
 fetch = + refs/têtes/*: réfs/télécommandes/Origine /*
 url = https: //[email protected] /p/mon-projet/

Git ne résoudra pas vos informations d'identification via __netrc_, pour résoudre ce problème, supprimez votre nom d'utilisateur, comme suit:

 [origine "distante"] 
 fetch = + refs/têtes/*: refs/télécommandes/Origine /*
 url = https://code.google.com/p /mon projet/

Solution alternative: Avec la version 1.7.9 de Git + (janvier 2012): Cette réponse de Mark Longair détaille le mécanisme de cache des informations d'identification qui vous permet également de pas enregistrez votre mot de passe en clair, comme indiqué ci-dessous.


Avec Git 1.8. (avril 2013):

Vous pouvez maintenant utiliser un fichier chiffré .netrc (avec gpg).
Sous Windows: _%HOME%/_netrc_ (___, et non '_._')

A nouvel assistant d'identification en lecture seule (en _contrib/_) pour interagir avec les fichiers _.netrc/.authinfo_ a été ajouté.

Ce script vous permettrait d'utiliser des fichiers netrc chiffrés au moyen de gpg , ce qui vous éviterait d'avoir à stocker vos informations d'identification dans un fichier texte.

Les fichiers portant l'extension _.gpg_ seront décryptés par GPG avant analyse.
Plusieurs _-f_ arguments sont OK. Ils sont traités dans l'ordre et la première entrée correspondante trouvée est renvoyée via le protocole d'assistance des informations d'identification.

Lorsqu'aucune option _-f_ n'est donnée, les fichiers _.authinfo.gpg_, _.netrc.gpg_, _.authinfo_ et _.netrc_ de votre répertoire de base sont utilisés dans cet ordre.

Pour activer cet assistant d'identification:

_git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
_

(Notez que Git ajoutera "_git-credential-_" au nom de l’assistant et le recherchera 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 à l'adresse " Existe-t-il un moyen de ne pas saisir le mot de passe lors de l'utilisation de _https:// github_ "


Avec Git 2.18+ (juin 2018), vous pouvez désormais personnaliser le programme GPG utilisé pour déchiffrer le fichier crypté _.netrc_.

Voir commit 786ef5 , commit f07eeed (12 mai 2018) par Luis Marsano (``) .
(Fusionnée par Junio ​​C Hamano - gitster - in commit 017b7c5 , 30 mai 2018)

_git-credential-netrc_: accepte l'option gpg

_git-credential-netrc_ était codé en dur à déchiffrer avec 'gpg', quelle que soit l'option gpg.program.
Ceci est un problème sur les distributions comme Debian qui appellent GnuPG moderne, quelque chose d'autre, comme '_gpg2_'

192
VonC

Vous pouvez également installer Git Credential Manager for Windows pour enregistrer les mots de passe Git dans le gestionnaire des informations d'identification Windows au lieu de _netrc. C'est un moyen plus sûr de stocker les mots de passe.

34
KindDragon

Cela permettra à Git de s'authentifier sur HTTPS en utilisant .netrc:

  • Le fichier doit s'appeler _netrc et se trouver dans c:\Users\<username>.
  • Vous devrez définir une variable d'environnement appelée HOME=%USERPROFILE% (définissez les variables d'environnement à l'échelle du système à l'aide de 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 fichier _netrc ne peut pas contenir d'espaces (le mot de passe ne fonctionnera pas).
9
EBlake

Je poste un moyen d'utiliser _netrc pour télécharger des documents à partir du site www.course.com.

Si quelqu'un souhaite utiliser le coursera-dl pour télécharger les documents de classe ouverte sur www.coursera.com, et sous le système d'exploitation Windows, quelqu'un souhaite utiliser un fichier du type ".netrc", qui se trouve dans le même système d'exploitation-Unix, pour ajouter le fichier. option -n au lieu de -U <username> -P <password> par souci de commodité. Il/elle peut le faire comme ceci:

  1. Vérifiez le chemin d’accueil sous Windows: setx HOME %USERPROFILE% (reportez-vous à réponse de VonC ). La variable d’environnement HOME sera sauvegardée sous le nom C:\Users\"username".

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

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

1
BO.LI