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):
Теперь вы можете использовать зашифрованный.netrc (с gpg
).
В 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>
для удобства. Он / она может сделать это так:
Проверьте домашний путь в ОС Windows:
setx HOME %USERPROFILE%
(см . ответ VonC). Это спасетHOME
переменная среды какC:\Users\"username"
,Найдите в каталоге
C:\Users\"username"
и создайте имя файла_netrc
,ПРИМЕЧАНИЕ: там нет никакого суффикса. содержание как:machine coursera-dl login <user> password <pass>
Используйте команду как
coursera-dl -n --path PATH <course name>
скачать материалы класса. Больше параметров Coursera-DL для этой страницы.
В Windows файл _netrc
должен быть создан, а не .netrc
, Это может быть сохранено в "C:\users\"username".
Посмотрите на Git - Как использовать файл.netrc в Windows, чтобы сохранить пользователя и пароль, которые дают вам полную информацию.