Est-il possible d'utiliser un fichier .netrc sous Windows lorsque j'utilise Git pour cloner un référentiel distant avec HTTP et un mot de passe utilisateur?
Est-il possible d'utiliser un fichier .netrc sous Windows lorsque j'utilise Git pour cloner un référentiel distant avec HTTP et un mot de passe utilisateur?
Réponses:
Est-il possible d'utiliser un
.netrc
fichier sous Windows?
Oui, vous devez:
%HOME%
(pré-Git 2.0, n'est plus nécessaire avec Git 2.0+)_netrc
fichier dans%HOME%
Si vous utilisez Windows 7/10, dans une CMD
session, 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 appelé ' _netrc
'
Remarque: encore une fois, pour Windows, vous avez besoin d'un _netrc
fichier « », pas d' un .netrc
fichier « ».
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, je n'avais pas besoin de définir la
HOME
variable d'environnement. Le_netrc
fichier seul 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 définit la %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 cela 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
".
Un piège courant avec le netrc
support sur Windows est que git contournera son utilisation si une URL d'origine https spécifie un nom d'utilisateur.
Par exemple, si votre .git/config
fichier contient:
["origine" distante] fetch = + refs / heads / *: refs / remotes / origin / * url = https: //bob@code.google.com/p/my-project/
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 / heads / *: refs / remotes / origin / * url = https://code.google.com/p/my-project/
Solution alternative: Avec git version 1.7.9+ (janvier 2012): Cette réponse de Mark Longair détaille le mécanisme de cache des informations d'identification qui vous permet également de ne pas stocker votre mot de passe en texte brut comme indiqué ci-dessous.
Avec Git 1.8.3 (avril 2013):
Vous pouvez maintenant utiliser un .netrc chiffré (avec gpg
).
Sous Windows: %HOME%/_netrc
( _
, pas ' .
')
Un nouvel assistant d'identification en lecture seule (in
contrib/
) pour interagir avec les.netrc/.authinfo
fichiers a été ajouté.
Ce script vous permettrait d' utiliser des fichiers netrc cryptés par gpg , évitant ainsi le problème de stocker vos informations d'identification dans un fichier texte brut.
Les fichiers avec l'
.gpg
extension seront décryptés par GPG avant l'analyse.
Les-f
arguments multiples 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 d'identification.Lorsqu'aucune
-f
option est donnée,.authinfo.gpg
,.netrc.gpg
,.authinfo
, et les.netrc
fichiers dans votre répertoire 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 sur " Existe-t-il un moyen d'ignorer la saisie de mot de passe lors de l'utilisationhttps:// github
"
Avec Git 2.18+ (juin 2018), vous pouvez désormais personnaliser le programme GPG utilisé pour décrypter le .netrc
fichier crypté .
Voir commit 786ef50 , commit f07eeed (12 mai 2018) par Luis Marsano (``) .
(Fusionné par Junio C Hamano - gitster
- dans commit 017b7c5 , 30 mai 2018)
git-credential-netrc
: accepter l'gpg
option
git-credential-netrc
a été codé en dur pour déchiffrer avec «gpg
» quelle que soit l'option gpg.program.
C'est un problème sur les distributions comme Debian qui appellent GnuPG moderne autre chose, comme 'gpg2
'
http.proxy
dans vos variables d'environnement. Ou, au contraire, pour ajouter votre serveur à une no_proxy
variable, pour éviter d'essayer d'accéder à un serveur LAN via WAN.
msysgit
sur Windows 7, je n'avais pas besoin de définir la HOME
variable d'environnement. Le _netrc
fichier seul a fait l'affaire.
Vous pouvez également installer Git Credential Manager for Windows pour enregistrer les mots de passe Git dans le gestionnaire d'informations d'identification Windows au lieu de _netrc
. Il s'agit d'un moyen plus sûr de stocker les mots de passe.
.netrc
fichier crypté . Vous n'aurez pas à saisir ces informations une seule fois pendant la session.
Cela permettra à Git de s'authentifier sur HTTPS en utilisant .netrc
:
_netrc
et situé dans c:\Users\<username>
.HOME=%USERPROFILE%
(définir 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
fichier ne peut pas contenir d'espaces (l'indication du mot de passe ne fonctionnera pas).Je publie un moyen d'utiliser _netrc
pour télécharger des documents à partir du site www.course.com.
Si quelqu'un veut utiliser le coursera-dl pour télécharger les matériaux de classe ouverte sur www.coursera.com, et sur le système d'exploitation Windows, quelqu'un veut utiliser un fichier comme ".netrc" qui est dans le système d'exploitation comme-Unix pour ajouter le option -n
au lieu de -U <username> -P <password>
pour plus de commodité. Il / elle peut le faire comme ceci:
Vérifiez le chemin d'accès à la maison sur le système d'exploitation Windows: setx HOME %USERPROFILE%
(reportez-vous à la réponse de VonC ). Cela enregistrera la HOME
variable d'environnement sous C:\Users\"username"
.
Recherchez dans le répertoire C:\Users\"username"
et créez un nom de fichier _netrc
. REMARQUE: il n'y a AUCUN suffixe.
le contenu est comme:machine coursera-dl login <user> password <pass>
Utilisez une commande comme coursera-dl -n --path PATH <course name>
pour télécharger le matériel de classe. Plus de détails sur les options coursera-dl pour cette page .
HOME
variable d'environnement est importante, car elle n'est pas définie par défaut sous Windows. Vous pouvez définir cette variable dans le répertoire de votre choix (ce n'est pas nécessaireC:\users\mylogin
): par exemple, au travail, je la place sur mon disque distant privé associé à mon compte Windows, ce qui me permet de changer de bureau sans avoir à perdre mes paramètres.ssh
ou_netrc
.