Git - Как использовать файл.netrc в Windows для сохранения пользователя и пароля

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

4 ответа

Решение

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

Да, вы должны:

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

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

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>

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

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

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

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

爱国者 верит в комментарии, что "кажется, что это не будет работать для протокола HTTP"

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


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

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

[удаленное "происхождение"]
     fetch = + refs / heads / *: refs / remotes / origin / *
     url = https: //bob@code.google.com/p/my-project/

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

[remote "origin"] fetch = + refs / возглавляет /*:refs/remotes/origin/*
     url = https://code.google.com/p/my-project/ 

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


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

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

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

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

Файлы с .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) Луиса Марсано (``).
(Объединено Юнио С Хамано - gitster - в коммите 017b7c5 от 30 мая 2018 года)

git-credential-netrc принять gpg вариант

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

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

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

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

Я публикую способ использования _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 для этой страницы.

В Windows файл _netrc должен быть создан, а не .netrc, Это может быть сохранено в "C:\users\"username".

Посмотрите на Git - Как использовать файл.netrc в Windows, чтобы сохранить пользователя и пароль, которые дают вам полную информацию.

Другие вопросы по тегам