143

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 和从 Archlinux 的存储库安装的 git。(git 1.8.0)

4

9 回答 9

221

@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
于 2013-01-25T18:45:33.653 回答
59

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 命令应该指向可执行文件。这就是为什么它对我不起作用。

于 2012-11-15T02:51:49.603 回答
26

2016 年第四季度更新:

  • Unix、Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(请参阅“使用 Git 凭证助手时出错gnome-keyring”)

  • 视窗:

    git config --global credential.helper manager
    

(请参阅“如何在 Windows 中退出 Git Bash 控制台? ”:即Git for Windows,使用最新的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 中使用它。

您使用的是“凭据助手”(反过来,它将调用它在 Windows 上想要的任何凭据 API)。

GitHub for Windows提供了这样一个帮助程序(作为一个名为... github 的可执行文件),并且可以在 Windows 会话期间存储您的凭据。
从那个“GitHub for Windows”窗口启动一个 shell,你会看到,输入“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
于 2012-11-14T20:02:58.800 回答
20

2018 年 10 月更新

GNOME 已弃用 libgnome-keyring 并将其替换为 libsecret。提交https://github.com/git/git/commit/87d1353a6a添加了一个新的凭证助手 /usr/libexec/git-core/git-credential-libsecret。

git config --global credential.helper libsecret

于 2018-10-11T03:50:12.730 回答
11

对于 Fedora 上的任何人,我稍微编辑了 James Ward 的答案:

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
于 2014-01-17T17:28:44.887 回答
8

只需将这两行添加到您的~/.gitconfig文件中:

[credential]
    helper = gnome-keyring

下次 Git 要求你输入密码时,输入的密码会保存到 Gnome Keyring 中(你可以用seahorse工具看到这个),之后就不会再要求你输入密码了。

这假设您的 Git 版本足够新(如 2.1.0)并且您在Linux Fedora、RHEL 或 CentOS 下。对于旧版本或其他操作系统/发行版,请查看其他答案。

于 2017-06-30T13:05:32.033 回答
3

某些发行版确实将此集成作为安装包提供,无需任何编译。根据您的 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
于 2019-11-05T06:14:30.613 回答
2

我在无头服务器上尝试Ubuntu 的答案,输入令牌时出现以下错误:

Remote error from secret service: org.freedesktop.DBus.Error.UnknownMethod: No such interface 'org.freedesktop.Secret.Collection' on object at path /org/freedesktop/secrets/collection/login

store failed: No such interface 'org.freedesktop.Secret.Collection' on object at path /org/freedesktop/secrets/collection/login

这是在无头服务器上为我工作的解决方案(请参阅 https://keyring.readthedocs.io/en/latest/#using-keyring-on-headless-linux-systems):

  • 首先,我运行了与设置为答案中相同命令:git-credential-libsecretcredential.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
  • 然后,每当我开始使用凭据(例如,类似的命令git push)的会话时,我都会运行:
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自动身份验证等。

于 2021-04-15T19:55:49.883 回答
1

在 Fedora 上,您需要安装

$ sudo dnf install git-credential-libsecret

并编辑您的git 配置以使用凭证助手。

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

仅供参考,该libsecret包裹最近已被拆分,请参阅@rugk 的帖子。这就是用户需要重新安装此软件包的原因。

于 2020-03-29T12:35:19.220 回答