关于linux:将Git凭证帮助器与gnome-keyring一起用作Sudo时出错

Error when using Git credential helper with gnome-keyring as Sudo

我在寻找一种安全地存储凭证的方法,同时连接到使用SSL的Git服务器。我在@james ward处看到这个建议(我所做的唯一编辑是更新了我们的"系统"配置,而不是我们的"全局"配置(https://stackoverflow.com/a/14528360/6195194)

1
2
3
4
sudo apt-get install libgnome-keyring-dev
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --system credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

我就可以跑了

1
git clone https://ipaddress/git/repo.git

但是,当我运行以下命令时,凭证帮助程序将存储我的凭证:

1
sudo git clone https://ipaddress/git/repo.git testfolder

它给了我以下错误

1
** (process:3713): CRITICAL **: Error communicating with gnome-keyring-daemon

有时我需要运行sudo git clone,因为有时我需要创建克隆的目录需要它。任何帮助都将不胜感激。

我使用的版本:-Git版本1.9.1-Ubuntu服务器14.0.4

提前谢谢!-理查德O。


除了使用sudo之外,注意2016年,libgnome-keyring是针对gnome的,现在已被否决(实际上,从2014年1月开始)。

Git 2.11+(2016年第4季度)将包括使用libsecret的新凭证助手。

见Mantas Mikul的Commit 87D1353(2016年10月9日)?北美(grawity)。(由Junio C Hamano--gitster于2016年10月26日在Commit BFE800C合并)

A new credential helper that talks via"libsecret" with implementations of XDG Secret Service API has been added to contrib/credential/.

it uses libsecret which can support other implementations of XDG Secret
Service API.

  • 您可以通过以下方式安装libsecret和开发库:

    埃多克斯1〔12〕

  • 然后您需要构建凭证管理器

    cd /usr/share/doc/git/contrib/credential/libsecret(如果没有自动安装,从源文件复制credential/libsecret文件夹)

    埃多克斯1〔14〕

  • 最后,您应该将git指向配置中新创建的文件:

    埃多克斯1〔15〕

  • 正如Mati865在评论中所指出的:

    It should be noted that some distros like Arch and Fedora provide helpers available as both binary and source.

    • Libsecret binary on Arch: /usr/lib/git-core/git-credential-libsecret, and
    • Libsecret binary on Fedora: /usr/libexec/git-core/git-credential-libsecret.


    使用sudo将命令作为根运行。这就像请求您的系统管理员(如果有)为您运行一个命令。root用户不打算做任何与开发相关的事情,因此git不打算用作根。

    一旦您以另一个用户(根用户或任何其他用户)的身份运行一个命令,预计该其他用户将无法与您的常规用户正常通信(特别是,它在这里找不到您的gnome keyring守护进程)。

    所以,答案是:"不要这样做"。如果您确实需要在特定目录中克隆,请按照codewizard答案中的建议为自己授予该目录的权限。实际上,如果您需要在一个没有权限的目录中进行克隆,那么就问问您自己是否做错了什么:原则上,这不应该发生(我的猜测是:您过去使用sudo的次数太多了,这就是为什么您在这里或那里有um可写目录的原因)。


    I sometimes need to run sudo git clone since sometimes the directory where I need to make a clone requires it. Any help would be appreciated

    试图将存储库克隆到其中的文件夹是由根创建的,因此除非您是根(sudo),否则您无权在该文件夹下写入或创建文件夹,设置权限(chmodchown,您将能够克隆到该文件夹中。

    1
    chmod 755 /path