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

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

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

5 ответов

Решение

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

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

machine myRemoteServer
login myUserName
password s3cret

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

Начиная с (я думаю) git версии 1.7.8, от 2 декабря 2011 года 1), git поддерживает так называемых помощников по учетным данным.

См. Страницу руководства gitcredentials(7) для деталей
(Эта страница также описывает где core.askpass вписывается в это).

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

  • кеш: см. git-credential-cache(1) для подробностей.

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

  • store: Подробности см. в git-credential-store(1).

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


Существуют некоторые сторонние помощники по учетным данным для хранения имени пользователя и пароля в KDEWallet (KDE), в GNOME Keyring, в Windows Credential Store (теперь это интегрировано в Git для Windows), в MacOS X Keychain и т. Д.


Примечания:

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

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

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

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

Этот сценарий позволит вам использовать файлы netrc, зашифрованные в формате gpg, что позволит избежать сохранения ваших учетных данных в текстовом файле.

-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 ".

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

Другие вопросы по тегам