Как использовать 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.

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