Чи можливо використовувати файл .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, .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/
Альтернативне рішення: З версією 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.
msysgitWindows 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налаштування.