Можно ли использовать файл .netrc в Windows, когда я использую Git для клонирования удаленного репозитория с HTTP и паролем пользователя?
Можно ли использовать файл .netrc в Windows, когда я использую Git для клонирования удаленного репозитория с HTTP и паролем пользователя?
Ответы:
Можно ли использовать
.netrcфайл в Windows?
Да, вы должны:
%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>
Люк упоминает в комментариях:
Используя последнюю версию msysgit на Windows 7, мне не нужно было устанавливать
HOMEпеременную среды. Один_netrcфайл сделал свое дело.
Это действительно то, что я упомянул в « Попытке install« github, .sshdir not there »:
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, чтобы исправить это, удалите ваше имя пользователя, например так:
[удаленное "происхождение"]
fetch = + refs / heads / *: refs / remotes / origin / *
url = https://code.google.com/p/my-project/
Альтернативное решение: С мерзавца версии 1.7.9+ (январь 2012): Этот ответ от Марка 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 г.) Луиса Марсано (``) .
(Слито Junio C Hamano - gitster- в фиксации 017b7c5 , 30 мая 2018 года)
git-credential-netrc: принятьgpgвариант
git-credential-netrcбыло жестко закодировано для расшифровки с 'gpg' независимо от опции gpg.program.
Это проблема в таких дистрибутивах, как Debian, которые называют современную GnuPG чем-то другим, например 'gpg2'
http.proxyпеременные в вашей среде. Или, наоборот, добавить свой сервер в no_proxyпеременную, чтобы не пытаться получить доступ к серверу локальной сети через глобальную сеть.
msysgitWindows 7, мне не нужно было устанавливать HOMEпеременную окружения. Один _netrcфайл сделал свое дело.
Вы также можете установить Git Credential Manager для Windows для сохранения паролей Git в диспетчере учетных данных Windows вместо _netrc. Это более безопасный способ хранения паролей.
.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 для этой страницы .
HOMEпеременная среды важна, потому что она не определена по умолчанию в Windows. Вы можете установить эту переменную в любой каталог, который вам нужен (это необязательноC:\users\mylogin): например, на работе я установил ее на свой частный удаленный диск, связанный с моей учетной записью Windows, что позволяет мне переключаться между рабочими столами без потери мои.sshили_netrcнастройки.