Чи можливо використовувати файл .netrc у Windows, коли я використовую Git для клонування віддаленого сховища з HTTP та паролем користувача?
Чи можливо використовувати файл .netrc у Windows, коли я використовую Git для клонування віддаленого сховища з HTTP та паролем користувача?
Відповіді:
Чи можливо використовувати
.netrc
файл у Windows?
Так: Ви повинні:
%HOME%
(pre-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/
Альтернативне рішення: З версією git 1.7.9+ (січень 2012 р.): Ця відповідь від Марка Лонгайра детально описує механізм кешування облікових даних, який також дозволяє не зберігати пароль у простому тексті, як показано нижче.
З Git 1.8.3 (квітень 2013):
Тепер ви можете використовувати зашифрований .netrc (з gpg
).
У Windows: %HOME%/_netrc
( _
, не ' .
')
Додано новий помічник (лише
contrib/
) для ввімкнення даних для взаємодії з.netrc/.authinfo
файлами.
Цей сценарій дозволить вам використовувати зашифровані gpg файли netrc , уникаючи проблеми із збереженням облікових даних у простому текстовому файлі.
Файли з
.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
'
http.proxy
змінні в оточенні. Або, навпаки, додати ваш сервер до no_proxy
змінної, щоб не намагатися отримати доступ до локального сервера через WAN.
msysgit
Windows 7, мені не потрібно було встановлювати HOME
змінну середовища. Сам _netrc
файл зробив свою справу.
Ви також можете встановити Git Credential Manager для Windows, щоб зберегти паролі Git у менеджері облікових даних Windows замість _netrc
. Це більш безпечний спосіб зберігання паролів.
.netrc
файлі. Вам не доведеться вводити ці дані навіть один раз під час сеансу.
Це дозволить Git аутентифікуватись на HTTPS, використовуючи .netrc
:
_netrc
та розміщений у c:\Users\<username>
.HOME=%USERPROFILE%
(встановити змінні середовища для всієї системи за допомогою параметра System на панелі керування. Залежно від версії Windows, можливо, вам доведеться вибрати "Додаткові параметри".)._netrc
файлі, не може містити пробілів (котирування пароля не буде працювати).Я розміщую спосіб використання _netrc
для завантаження матеріалів з сайту www.course.com.
Якщо хтось збирається використовувати для курсу завантаження матеріалів відкритого класу на www.coursera.com, а в ОС Windows хтось хоче використовувати файл типу ".netrc", який знаходиться в операційній системі Like-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>
скачати матеріали класу. Більше детальних варіантів курсу курсу-dl для цієї сторінки .
HOME
змінна середовища є важливою, оскільки вона не визначена за замовчуванням у Windows. Ви можете встановити цю змінну в будь-який каталог, який ви хочете (це не повинно бутиC:\users\mylogin
): наприклад, на роботі я встановлюю її на свій приватний віддалений диск, пов’язаний з моїм обліковим записом Windows, що дозволяє мені перемикатися на настільних ПК без втрати мої.ssh
або_netrc
налаштування.