Как использовать git с интеграцией gnome-keyring
Git 1.8.0 поддерживает интеграцию с gnome-keyring.
http://www.h-online.com/open/news/item/Git-1-8-0-can-access-Windows-and-GNOME-keyrings-1733879.html
Прочитав документы о помощниках по учетным данным git: http://git-scm.com/docs/gitcredentials.html
Я не смог найти способ использовать эту новую функцию. Как я могу интегрировать это? Я использую Archlinux с git, установленным из репозитория Archlinux. (мерзавец 1.8.0)
10 ответов
Git 1.8.0 поставляется с поддержкой gnome-keyring, но двоичный файл должен быть скомпилирован для вашей платформы.
Вот что решило это для меня в Archlinux:
$ sudo pacman -S libgnome-keyring
$ cd /usr/share/git/credential/gnome-keyring
$ make
$ git config --global credential.helper /usr/share/git/credential/gnome-keyring/git-credential-gnome-keyring
Решение @VonC было близко, но команда git config должна указывать на исполняемый файл. Вот почему это не работает для меня.
Ответ @marcosdsanchez для Arch (который отвечает на оригинальный вопрос), но я нахожусь на Ubuntu 13.04, так что вот что я должен был сделать:
sudo apt-get install libgnome-keyring-dev
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
Обновление Q4 2016:
Unix, Mac (Git 2.11+)
git config --global credential.helper libsecret
(См. " Ошибка при использовании помощника по учетным данным Git сgnome-keyring
")
Окна:
git config --global credential.helper manager
(См. " Как выйти из консоли Git Bash в Windows?": Это Git для Windows, использующий последнюю https://github.com/Microsoft/Git-Credential-Manager-for-Windows)
Оригинальный ответ (2012)
Помощники по учетным данным для платформ Windows, Mac и Unix были впервые представлены в репозитории "git-credential-helper", который теперь включен в git distro:
Этот репозиторий содержит набор помощников по учетным данным Git (
gitcredentials
(7)), которые являются частьюgit
(или предполагается внести в будущем).
$ git clone git://github.com/pah/git-credential-helper.git
$ BACKEND=gnome-keyring # or any other backend
$ cd git-credential-helper/$BACKEND
$ make
$ cp git-credential-$BACKEND /path/to/git/crendential
при сборке он будет установлен в /path/to/git/credential
каталог.
Чтобы использовать этот бэкэнд, вы можете добавить его в свою (глобальную) конфигурацию Git, установив
(здесь для Unix):
git config --global credential.helper /path/to/git/credential/gnome-keyring/git-credential-gnome-keyring
Примечание для Windows:
Я полагаю, вы могли бы создать программу, работающую в Windows и вызывающую библиотеку типа " pypi keyring 0.10.
Но это бэкэнд, и вы не используете его напрямую из Git.
То, что вы используете, это "помощник по учетным данным" (который, в свою очередь, будет вызывать любой API учетных данных, который он хочет в Windows).
GitHub для Windows предоставляет такого помощника (как исполняемый файл с именем... github) и может хранить ваши учетные данные на время сеанса Windows.
Запустите оболочку из этого окна "GitHub для Windows", и вы увидите, набрав "git config --system -l":
C:\Users\VonC\Documents\GitHub\test [master +2 ~0 -0 !]> git config --system -l
credential.helper=!github --credentials
credential.helper=!github --credentials
часть вызовет помощник по учетуgithub
".
$ git config [--global] credential.helper $BACKEND
Обновление октябрь 2018
GNOME устарел libgnome-keyring и заменил его на libsecret. Коммит https://github.com/git/git/commit/87d1353a6a добавил новый помощник по учетным данным /usr/libexec/git-core/git-credential-libsecret.
git config --global credential.helper libsecret
Для всех на Fedora я немного отредактировал ответ Джеймса Уорда:
sudo yum install libgnome-keyring-devel
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
Просто добавьте эти две строки в свой ~/.gitconfig
файл:
[credential]
helper = gnome-keyring
В следующий раз, когда Git попросит вас ввести пароль, введенный пароль будет сохранен в Gnome Keyring (вы можете увидеть это с seahorse
инструмент), и вам больше не придется запрашивать пароль.
Это предполагает, что ваша версия Git достаточно новая (например, 2.1.0) и вы работаете под Linux Fedora, RHEL или CentOS. Для более старых версий или других ОС / дистрибутивов посмотрите другие ответы.
В Fedora вам необходимо установить
$ sudo dnf install git-credential-libsecret
и отредактируйте конфигурацию git, чтобы использовать помощник по учетным данным.
[credential]
helper = /usr/libexec/git-core/git-credential-libsecret
К вашему сведению libsecret
пакет был недавно разделен, см. сообщение от @rugk. Вот почему пользователям необходимо переустановить этот пакет.
Вариант на безголовом сервере, который работал у меня (см. Https://keyring.readthedocs.io/en/latest/#using-keyring-on-headless-linux-systems ):
- Сначала я выполнил те же команды, что и в ответа для Ubuntuответе, чтобы установить
git-credential-libsecret
какcredential.helper
:
# You may also first install gnome-keyring if not installed
sudo apt install gnome-keyring
sudo apt install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
- Затем, когда я запускаю сеанс, в котором я буду использовать учетные данные (например, такие команды, как), я запускаю:
dbus-run-session -- sh # Replace 'sh' with whatever shell you use.
gnome-keyring-daemon --unlock
# Enter your token here, then hit Enter, then Ctrl+d
# You might clean the terminal display with Ctrl+l for security reasons
Это запускает сеанс D-Bus, внутри которого я могу запустить, например
git push
и тому подобное с автоматической аутентификацией.
Некоторые дистрибутивы поставляются с этой интеграцией в виде установочного пакета, не требующего компиляции. В зависимости от вашей версии GNOME вам потребуется установить либоgnome-keyring
или libsecret
версии пакета, что-то вроде git-credential-gnome-keyring
(OpenSUSE Leap 42.3).
Однако это само по себе не позволит автоматически интегрировать Git с связкой ключей GNOME. Вы все равно должны настроить Git для использования этого метода хранения учетных данных:
git config --global credential.helper gnome-keyring # If you installed git-credential-gnome-keyring
git config --global credential.helper libsecret # If you installed git-credential-libsecret
Пакет git Arch Linux включает git-credential-libsecret (который заменил git-credential-gnome-keyring), поэтому вы можете запустить:
git config --global credential.helper libsecret
В качестве альтернативы вводу паролей или личных токенов вы также можете попробовать git-credential-oauth.
Никаких больше паролей! Больше никаких токенов личного доступа! Больше никаких SSH-ключей!
Помощник по учетным данным Git, который обеспечивает безопасную аутентификацию в GitHub, GitLab, BitBucket и других форжах с использованием OAuth.
При первом нажатии помощник откроет окно браузера для аутентификации. Последующие нажатия в течение срока службы хранилища не требуют никакого взаимодействия.
Это совместимо с любым помощником хранилища, включая git-credential-cache или git-credential-libsecret.