Git - Как использовать файл .netrc в Windows для сохранения пользователя и пароля

158

Можно ли использовать файл .netrc для Windows, когда я использую Git для клонирования удаленного репозитория с помощью http и user-password?

Теги:
authentication

4 ответа

178
Лучший ответ

Обновить Апрель 2013, git 1.8.3:

Теперь вы можете использовать зашифрованный .netrc (с gpg).

A новый помощник учетных данных только для чтенияcontrib/) для взаимодействия с .netrc/.authinfo файлы добавлены.

Что script позволит вам использовать 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"


Обновление в конце 2012 года, с git версии 1.7.9 +: Этот ответ из Mark Longair детализирует механизм кэширования учетных данных, который позволяет не хранить ваш пароль в виде простого текста как показано ниже.


(Оригинальный ответ)

Вы должны определить:

  • переменная окружения %HOME%
  • поместите файл _netrc в %HOME%

Если вы используете Windows 7

запустите cmd введите это:

setx HOME %USERPROFILE%

и% HOME% будет установлен на 'C:\Users\"username"'

тогда перейдите к нему и создайте файл под названием '_netrc'

Примечание. Для Windows вам нужен файл "_netrc", а не ".netrc".

Его содержание довольно стандартное (замените его вашими значениями):

machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>

Luke упоминает в комментариях:

Используя последнюю версию msysgit в Windows 7, мне не нужно было устанавливать переменную среды HOME. Только файл _netrc сделал трюк.

Это действительно то, о чем я упоминал в " Пытаясь" install "github, .ssh dir не существует":
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 обходит ее, если источник https url указывает имя пользователя.

Например, если ваш файл .git/config содержит:

[remote "origin"]
     fetch = +refs/heads/*:refs/remotes/origin/*
     url = https://[email protected]/p/my-project/

git не разрешит ваши учетные данные с помощью _netrc, чтобы исправить это, удалите свое имя пользователя, например:

[remote "origin"]
     fetch = +refs/heads/*:refs/remotes/origin/*
     url = https://code.google.com/p/my-project/
  • 0
    хорошо, попробую. Спасибо!
  • 0
    @Bernd: переменная среды HOME важна, потому что она не определена по умолчанию в Windows. Вы можете установить эту переменную в любой каталог, который вам нужен (это не обязательно должен быть C:\users\mylogin ): например, на работе я установил ее на свой личный удаленный диск, связанный с моей учетной записью Windows, что позволяет мне переключать рабочие столы, не теряя мои настройки .ssh или _netrc .
Показать ещё 27 комментариев
34

Вы также можете установить Git Диспетчер учетных данных для Windows для сохранения паролей Git в диспетчере учетных данных Windows вместо netrc. Это более безопасный способ хранения пароля

  • 8
    Отличный ответ, это единственный ответ, который я нашел, который позволяет мне сохранять простоту имени пользователя / пароля (надежно) без необходимости иметь дело со всем этим дерьмом SSH.
  • 0
    @KirkWoll, смотрите мой ответ об обновлении выше: теперь вы можете хранить свои учетные данные в зашифрованном .netrc . Вам не нужно будет вводить эти учетные данные даже один раз во время сеанса.
7

Это позволит git пройти проверку подлинности на https, используя .netrc

  • Файл должен иметь имя _netrc и расположен в c:\Users\<username>
  • Вам нужно будет установить переменную среды с именем HOME=%USERPROFILE% (Установить общесистемные переменные среды, используя параметр "Система" на панели управления. В зависимости от версии Windows вам может потребоваться выбрать "Дополнительные параметры" )
  • Пароль, хранящийся в файле _netrc, не может содержать пробелы (при этом пароль не будет работать)
  • 0
    Самое простое и лучшее решение. Работал как шарм с Android Studio, Source Tree и Git командной строки. Я должен был использовать это, когда Google рекомендовал Cloud SDK, опция credential.helper не удалась, и мне пришлось вручную создавать учетные данные и использовать с файлом net rc. В моем случае я не потребовал вариант 2 и 3.
1

Отправьте способ использования _netrc, чтобы загрузить материалы с сайта www.course.com. Я надеюсь, что некоторые помогут вам.

Если кто-то собирается использовать coursera-dl для загрузки материалов открытого класса на www.coursera.com. и ON WINDOWS OS кто-то хочет использовать такой файл, как ".netrc", который находится в OS-Unix для добавления опции -n вместо -U -P для удобства. Он может сделать вот так:

  • проверьте домашний путь в ОС Windows: setx HOME %USERPROFILE% (обратитесь: VonC answer).it сохранит HOME как C:\Users\"username".

  • найдите в каталоге C:\Users\"username" и создайте имя файла _netrc. ПРИМЕЧАНИЕ: нет никакого суффикса. содержимое похоже на: machine coursera-dl login <user> password <pass>

  • используйте команду, например coursera-dl -n --path PATH <course name>, чтобы загрузить материалы класса. подробнее подробности coursera-dl для эта страница.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню