Git - Как использовать файл .netrc в Windows для сохранения пользователя и пароля - PullRequest
166 голосов
/ 17 мая 2011

Можно ли использовать файл .netrc в Windows, когда я использую Git для клонирования удаленного репозитория с HTTP и паролем пользователя?

Ответы [ 4 ]

192 голосов
/ 17 мая 2011

Можно ли использовать файл .netrc в Windows?

Да: необходимо:

  • определить переменную среды %HOME% (предварительно-Git 2.0, больше не требуется с Git 2.0 +)
  • поместите файл _netrc в %HOME%

Если вы используете Windows 7/10, в CMD session, введите:

setx HOME %USERPROFILE%

, и %HOME% будет установлен в 'C:\Users\"username"'.
Перейдите в эту папку (cd %HOME%) и создайте файл с именем '_netrc'

Примечание: Опять же, для Windows вам нужен файл' _netrc ', , а не и файл .netrc.

Его содержимое вполне стандартно(Замените <examples> вашими значениями):

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

Люк упоминает в комментариях:

Использование последней версии msysgitв Windows 7 мне не нужно было устанавливать переменную окружения HOME.Только файл _netrc добился цели.

Это действительно то, что я упомянул в " Попытка" install "github, .ssh dir там нет ":
git-cmd.bat, включенный в msysgit, устанавливает переменную окружения %HOME%:

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

爱国者 верит в комментариях, что "кажется, что он выиграл"t работает для протокола HTTP "

Однако я ответил, что netrc используется curl и работает для протокола HTTP, как показано в в этом примере (ищите 'netrc 'на странице):Также используется с протоколом HTTP здесь: "_netrc / .netrc альтернатива cURL".


Обычная ловушка с поддержкой netrc в Windows состоит в том, чтоGit будет обходить его, если в URL-адресе источника https указано имя пользователя.

Например, если ваш .git/config файл содержит:

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

Git не разрешит ваши учетные данные через _netrc, чтобы исправить это, удалите ваше имя пользователя, например:

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

Альтернативное решение: С git версия 1.7.9 + (январь 2012): Этот ответ из Марк Лонгэйр подробнее механизм кэширования учетных данных , который также позволяет вам не сохранять ваш пароль в виде простого текста, как показано ниже.


С Git 1.8.3 (апрель 2013):

Теперь вы можете использовать зашифрованный .netrc gpg).
В Windows:%HOME%/_netrc (_, а не '.')

A новый помощник только для чтения учетных данных contrib/) длядобавлено взаимодействие с файлами .netrc/.authinfo.

Этот сценарий позволит вам использовать файлы netrc, зашифрованные в формате gpg , что позволит избежать сохранения ваших учетных данных на обычномтекстовый файл.

FФайлы с расширением .gpg будут расшифрованы GPG перед анализом.
Несколько аргументов -f в порядке.Они обрабатываются по порядку, и первая найденная соответствующая запись возвращается по вспомогательному протоколу учетных данных.

Когда не указана опция -f, .authinfo.gpg, .netrc.gpg, .authinfo и .netrc файлы в вашем домашнем каталоге используются в этом порядке.

Чтобы включить этого помощника по учетным данным:

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

(Обратите внимание, что Git будет предшествовать "git-credential-"к имени помощника и найдите его в пути.)

# 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'

См. полный пример в " Есть ли способ пропустить ввод пароля при использовании https:// github "


С Git 2.18+ (июнь 2018 г.) вы теперь можете настроить программу GPG, используемую для дешифрования зашифрованного файла .netrc.

См. коммит 786ef50 , коммит f07eeed (12 мая 2018 г.) Луис Марсано (``) .
(объединено Junio ​​C Hamano- gitster - в коммит 017b7c5 , 30 мая 2018 г.)

git-credential-netrc: принять gpg опция

git-credential-netrc был закодирован для расшифровки с помощью 'gpg 'независимо от опции gpg.program.
Это проблема в дистрибутивах, таких как Debian, которые называют современный GnuPG как-то иначе, например,' gpg2 '

34 голосов
/ 11 октября 2012

Вы также можете установить Git Credential Manager для Windows , чтобы сохранить пароли Git в диспетчере учетных данных Windows вместо _netrc. Это более безопасный способ хранения паролей.

9 голосов
/ 06 июля 2016

Это позволит Git аутентифицироваться на HTTPS, используя .netrc:

  • Файл должен иметь имя _netrc и находиться в c:\Users\<username>.
  • Вам потребуется установить переменную среды с именем HOME=%USERPROFILE% (установите общесистемные переменные среды с помощью параметра «Система» на панели управления. В зависимости от версии Windows может потребоваться выбрать «Дополнительные параметры».)
  • Пароль, хранящийся в файле _netrc, не может содержать пробелов (цитирование пароля не будет работать).
1 голос
/ 09 сентября 2016

Я публикую способ использования _netrc для загрузки материалов с сайта www.course.com.

Если кто-то собирается использовать coursera-dl для загрузки материалов открытого класса на www.coursera.com, а в ОС Windows кто-то хочет использовать файл типа .netrc, который находится в подобной-Unix ОС добавить опцию -n вместо -U <username> -P <password> для удобства. Он / она может сделать это так:

  1. Проверьте домашний путь в ОС Windows: setx HOME %USERPROFILE% (см. ответ VonC ). Будет сохранена переменная окружения HOME как C:\Users\"username".

  2. Найдите в каталоге C:\Users\"username" и создайте имя файла _netrc. ПРИМЕЧАНИЕ: суффикса НЕ существует. содержание как: machine coursera-dl login <user> password <pass>

  3. Используйте команду типа coursera-dl -n --path PATH <course name>, чтобы загрузить материалы класса. Больше подробностей параметров Coursera-dl для этой страницы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...