Git http - безопасно запоминать учетные данные

Есть ли способ безопасно позволить git запомнить мои учетные данные при подключении к удаленным репозиториям через HTTP (S)?

Я пробовал подход core.askpass, подробно описанный в git-config, чтобы внешний script предоставил мои учетные данные. Хотя он отлично работает, имя пользователя и пароль по-прежнему хранятся в текстовом виде в небольшой оболочке script.

Ответ 1

git вызывает cURL при работе через HTTP. Вы можете хранить безопасные учетные данные, настроив файл .netrc в домашнем каталоге пользователя и сделав его конфиденциальным для пользователя (0600 в Linux).

Содержимое файла содержит имя пользователя и пароль для удаленного домена.

machine myRemoteServer
login myUserName
password s3cret

См. https://stackoverflow.com/questions/3947530/git-push-fatal-failed/7177690#7177690 для полной конфигурации на стороне сервера, которая может легко включать вызовы на ваш сервер ldap.

Ответ 2

Поскольку (я думаю) git версия 1.7.8, с 2 декабря 2011 1) git поддерживает так называемые помощники учетных данных:
см. gitcredentials (7) manpage

(Эта справочная страница также описывает, где core.askpass вписывается в это).

По умолчанию установка git включает два помощника:

  • cache. Подробнее см. git -credential-cache (1).

    Учетные данные кэша в памяти в течение короткого периода времени. Сохраненные учетные данные никогда не касаются диска и забываются после настраиваемого таймаута.

  • store. Подробнее см. git -credential-store (1).

    Хранить учетные данные неограниченно на диске. Файл будет иметь свои права на файловую систему, установленные для предотвращения чтения другими пользователями в системе, но не будет зашифрован или иным образом защищен. Та же безопасность, что и решение .netrc в ответ Эдди


Есть некоторые сторонние помощники учетных данных для хранения имени пользователя и пароля в KDEWallet (KDE), в GNOME Keyring, в Хранилище учетных данных Windows, в Keychain для MacOS X и т.д.


Сноска:

1)Настройка Git На странице справки GitHub упоминается, что

Вам понадобится git 1.7.10 или новее, чтобы использовать помощник учетных данных

Ответ 3

Поскольку git 1.8.3 (май 2013 г.), теперь вы можете указать зашифрованный .netrc для git для использования:

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

Что script позволит вам использовать gpg-зашифрованные файлы netrc, избегая проблемы с вашими учетными данными, хранящимися в текстовом файле.

-f|--file AUTHFILE
specify netrc-style files.  

Файлы с расширением .gpg будут дешифрованы GPG перед разбором.
Несколько аргументов -f в порядке. Они обрабатываются по порядку, и первая найденная совпадающая запись возвращается через вспомогательный протокол учетных данных (см. Ниже).

Если параметр -f не указан, .authinfo.gpg, .netrc.gpg, .authinfo и .netrc файлы в вашем домашнем каталоге используются в этом порядке.

Чтобы включить этот вспомогательный помощник:

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'

(Обратите внимание, что git будет добавлять "git-credential-" к имени помощника и искать его в пути.)


См. полный шаг за шагом пример:
"Есть ли способ пропустить ввод пароля при использовании https://github.com".

Ответ 4

Безопасная опция - использовать обычный SSH с парой открытого/закрытого ключа.