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?
Est-il possible d'utiliser un fichier _
.netrc
_ sous Windows?
Oui, vous devez:
%HOME%
_ (antérieure à Git 2.0, n'est plus nécessaire avec Git 2.0+)_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'optiongpg
_
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
_'
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.
Cela permettra à Git de s'authentifier sur HTTPS en utilisant .netrc
:
_netrc
et se trouver dans c:\Users\<username>
.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".)._netrc
ne peut pas contenir d'espaces (le mot de passe ne fonctionnera pas).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:
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"
.
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>
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 .