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

Est-il possible d'utiliser un .fichier netrc sur Windows lorsque j'utilise Git pour cloner un dépôt distant avec HTTP et user - password?

162
demandé sur Peter Mortensen 2011-05-17 17:08:40

4 réponses

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

Oui: vous devez:

  • définissez la variable d'environnement %HOME% (pré-Git 2.0, n'est plus nécessaire avec Git 2.0+)
  • mettre un _netrc fichier %HOME%

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

setx HOME %USERPROFILE%

et le %HOME% sera mis à 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 tout à fait standard (remplacer le <examples> par vos valeurs):

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

Luc mentionne dans les commentaires:

en utilisant la dernière version de msysgit sur Windows 7, Je n'ai pas eu besoin de définir la variable d'environnement HOME . Le seul fichier _netrc a fait l'affaire.

c'est en effet ce que j'ai mentionné dans " essayer de " install "github, .ssh dir not there ":

git-cmd.bat inclus dans msysgit n'définir le %HOME% variable d'environnement:

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

"

Cependant, j'ai répondu que netrc est utilisé par les curl , et travaille pour le protocole HTTP, comme indiqué dans cet exemple (cherchez " netrc ' de la page): . Également utilisé avec le protocole HTTP ici: " _netrc / .netrc alternative à cURL ".


un piège courant avec le support de netrc sur Windows est que git va contourner en l'utilisant si une url https origine spécifie un nom d'utilisateur.

par exemple, si votre fichier .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 justificatifs d'identité via _netrc , pour corriger cette supprimer votre nom d'utilisateur, comme si:

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

Alternative solution: With Git version 1.7.9+ (janvier 2012): This answer from Mark Longair details the credential cache mechanism which aussi vous permet de et non stocker votre mot de passe en clair comme indiqué ci-dessous.


Avec Git 1.8.3 (Avril 2013):

vous pouvez maintenant utiliser un crypté .netrc (avec gpg ).

Sous Windows: %HOME%/_netrc ( _ , pas . ')

Un nouvelle lecture seule identification d'assistance (dans contrib/ ) pour interagir avec l' Les fichiers .netrc/.authinfo ont été ajoutés.

ce script vous permettrait de utiliser des fichiers netrc cryptés gpg , en évitant la question d'avoir vos justificatifs stockés dans un fichier texte simple.

Les fichiers

avec l'extension .gpg seront déchiffrés par GPG avant l'analyse.

Les arguments multiples -f sont corrects. Ils sont traités dans l'ordre, et la première correspondance l'entrée trouvée est retournée via le protocole d'aide aux justificatifs d'identité.

quand aucune option -f n'est donnée, .authinfo.gpg , .netrc.gpg , .authinfo , et les fichiers .netrc de votre répertoire personnel sont utilisés dans cet ordre.

pour activer ce helper credential:

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

(notez que Git préparera " git-credential- " au nom de l'assistant et le cherchera 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 à " y a-t-il un moyen de ne pas taper de mot de passe en utilisant https:// github "


avec Git 2.18+ (juin 2018), vous pouvez maintenant personnaliser le programme GPG utilisé pour déchiffrer le fichier crypté .netrc .

Voir commettre 786ef50 , commettre f07eeed (12 Mai 2018) par Luis Marsano ( ` ) .

(fusionné par Junio C Hamano -- gitster -- dans commit 017b7c5 , 30 mai 2018)

git-credential-netrc : accepter gpg option

git-credential-netrc a été codé en dur pour être déchiffré avec" gpg " indépendamment de le gpg.option de programme.

C'est un problème sur les distributions comme Debian qui appellent "GnuPG moderne" quelque chose d'autre, comme gpg2

187
répondu VonC 2018-08-29 06:10:13

vous pouvez également installer Git Credential Manager pour Windows pour enregistrer les mots de passe Git dans Windows Credential manager au lieu de _netrc . C'est une façon plus sûre de stocker les mots de passe.

34
répondu KindDragon 2018-08-28 19:21:54

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

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

je poste une façon d'utiliser _netrc pour télécharger des documents à partir du site www.course.com.

si quelqu'un va utiliser le coursera-dl Pour télécharger les documents open-class sur www.coursera.com, et sur le système D'exploitation Windows quelqu'un veut utiliser un fichier comme ".netrc "qui est dans le même 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 ceci:

  1. chemin d'accès sur Windows OS: setx HOME %USERPROFILE% (se référer à réponse de VonC ). Il sauvera la variable d'environnement HOME comme C:\Users\"username" .

  2. localisez dans le répertoire C:\Users\"username" et créez 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ériaux de classe. Plus de détails sur les options coursera-dl pour cette page .

1
répondu BO.LI 2018-09-14 16:45:09