Как использовать git с интеграцией gnome-keyring

129

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. (git 1.8.0)

marcosdsanchez
источник

Ответы:

193

Ответ @ marcosdsanchez предназначен для Arch (который отвечает на исходный вопрос), но я использую Ubuntu. Для git> = 2.11:

sudo apt-get 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

Для git <2.11:

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
Джеймс Уорд
источник
9
Сначала я не решался сделать это, но в конце концов сделал, и это работает отлично. Как говорится в документации для gitcredentials , вы также можете сделать это git help -a | grep credential-и посмотреть, установлены ли у вас другие помощники. По умолчанию используются следующие параметры credential-cache(запомните пароль в течение некоторого времени после его ввода, по умолчанию 15 минут) и credential-store( по умолчанию просто сохраните пароль в виде открытого текста в незашифрованном файле на диске ~/.git-credentials).
ShreevatsaR
51
Может ли кто-нибудь объяснить, почему это нужно скомпилировать вручную и по умолчанию недоступно через пакет?
lanoxx
4
Работал в Ubuntu 14.04 LTS!
Евгений Кулабухов
4
просто нужно было chmod 0755 git-credential-gnome-keyringдобавить разрешение на выполнение для других пользователей, кроме root
Лари Хотари
8
Все еще актуально для Ubuntu 16.04 LTS
Евгений Кулабухов
54

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
источник
Я переформатировал свой ответ, чтобы отразить ваш вывод. Я построил его (по умолчанию в моем дистрибутиве git 1.8 он не был построен) и протестировал его сегодня утром. Это действительно работает.
VonC
1
Если вы понимаете, Package gnome-keyring-1 was not found in the pkg-config search path.вам не хватает библиотек разработчика для gnome-keyring. В Ubuntu они доступны с расширением apt-get install libgnome-keyring-dev. Кроме того, мне пришлось вручную загрузить репозиторий git contrib с github.com/git/git/tree/master/contrib и поместить его в / usr / share / git-core /. Эти файлы больше не входят в стандартную установку git, по крайней мере, с использованием официального git-core ubuntu ppa.
Johann
1
Это довольно хорошо объясняет, почему пакет aur git-credential-gnomekeyringисчез, и жаль, что в AUR такой информации нет.
ryenus
В ubuntu у меня нет папки git /usr/share/... только gitweb и git-core. Но я использую Git 1.7.9. Может быть, поэтому ...?
temporary_user_name
1
По состоянию на 2017 год для Arch libgnome-keyringдостаточно простой установки (по крайней мере, если вы используете gnome).
ald.li
25

Обновление 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 с использованием последней версии Microsoft Git Credential Manager для Windows )


Оригинальный ответ (2012)

Помощники по учетным данным для платформ Windows, Mac и Unix были впервые представлены в репозитории "git-credential-helper" , который теперь включен в дистрибутив git :

Этот репозиторий содержит набор помощников по учетным данным 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
VonC
источник
Не то, что я ищу. Ответ должен быть только * nix.
marcosdsanchez
@marcosdsanchez, хорошо, я отредактировал свой ответ, включив настройку и использование gnome-keyring в Unix с помощью Git.
VonC
Я хочу использовать функцию git 1.8.0, которая уже есть. Не сторонний код. Спасибо.
marcosdsanchez
@marcosdsanchez, тогда вам нужно скомпилировать github.com/git/git/tree/master/contrib/credential/gnome-keyring (который упакован с git). После компиляции вы должны установить и использовать его, как показано в моем ответе.
VonC
Думаю, встроенного двоичного кода нет?
marcosdsanchez
15

Обновление октябрь 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

vk5tu
источник
2
Вероятно, это должен быть комментарий к любому ответу на основе gnome-keyring здесь.
Мурмель
Согласитесь, gnome-keyringоснованные ответы должны быть соответственно отредактированы. Может просто исключить весь вариант. У меня это совсем не сработало на Ubuntu 19.10.
Марио
11

Для всех, кто пользуется 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
SuperGreg
источник
2
Я запутался, разве это еще не включено в пакеты git? Что же это за файл в пакете fc19, git-1.8.3.1-1.fc19.x86_64. Там в этот файл здесь: /usr/libexec/git-core/git-credential-gnome-keyring.
slm
10
В Fedora 21, git 2.1.0, вы можете просто сделать:git config --global credential.helper gnome-keyring
RedPoppy
7

Просто добавьте эти две строки в свой ~/.gitconfigфайл:

[credential]
    helper = gnome-keyring

В следующий раз, когда Git попросит вас ввести пароль, введенный пароль будет сохранен в Gnome Keyring (вы можете увидеть это с помощью seahorseинструмента), и после этого вам больше не потребуется пароль.

Это предполагает, что ваша версия Git достаточно новая (например, 2.1.0) и вы используете Linux Fedora, RHEL или CentOS. Для более старых версий или других ОС / дистрибутивов ознакомьтесь с другими ответами.

Оливер
источник
6
В Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
ferit
@Saibot: упс, ты прав. Похоже, что Fedora / RHEL предоставляет это, а Ubuntu - нет. Так что ответ Джеймса Уорда ( stackoverflow.com/a/14528360/2148773 ) в этом случае лучше.
оливер
2

Некоторые дистрибутивы поставляются с этой интеграцией в виде установочного пакета, не требующего компиляции. В зависимости от вашей версии 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
palswim
источник
В Ubuntu 19.10 эта gnome-keyringопция больше не работает для меня, но инструкция Джеймса Варда по- libsecretпрежнему работает хорошо. Однако меня смутила рекомендация использовать gnome-keyringданную здесь: github.com/timhughes/git-credential-libsecret
Марио
libsecret(или что find /usr -iname git-credential-libsecretдает) - правильный вариант в Gentoo Linux. Обратите внимание на то, что dev-vcs/gitнеобходимо установить расширение USE=gnome-keyring.
sphakka
1

В Fedora вам необходимо установить

$ sudo dnf install git-credential-libsecret

и отредактируйте конфигурацию git, чтобы использовать помощник по учетным данным.

[credential]
    helper = /usr/libexec/git-core/git-credential-libsecret

К вашему сведению, libsecretпакет недавно был разделен, см. Сообщение от @rugk . Вот почему пользователям необходимо переустановить этот пакет.

kinafu
источник