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 с парой открытого/закрытого ключа.
Ответ 5
Это может сработать для вас... http://samuel.kadolph.com/2011/03/store-your-git-https-passwords-in-your-os-x-keychain/