Можно ли использовать файл .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, .ssh
dir 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
переменную, чтобы не пытаться получить доступ к серверу локальной сети через глобальную сеть.
msysgit
Windows 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
настройки.