将Git凭证助手与gnome-keyring一起用作Sudo时出错

时间:2016-04-12 22:51:11

标签: linux git ubuntu gnome-keyring-daemon

我一直在寻找一种在连接到使用SSL的Git服务器时安全存储凭据的方法。我在@james-ward看到了这个建议(我编辑的只是我更新了我们的“系统”配置,而不是Git的“全局”配置(https://stackoverflow.com/a/14528360/6195194

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

然后我可以运行

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

并且凭证助手将存储我的凭据,但是当我运行以下内容时:

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

它给我以下错误

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

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

我正在使用的版本:   - git版本1.9.1   - Ubuntu Server 14.0.4

提前谢谢! -Richard O。

3 个答案:

答案 0 :(得分:55)

除了使用sudo之外,请注意,在2016年,libgnome-keyring特定于GNOME,现已弃用(自January 2014, actually起)。

Git 2.11 +(2016年第4季度)将使用 libsecret 包含新的凭据帮助程序。

commit 87d1353Mantas Mikulėnas (grawity)(2016年10月9日) Junio C Hamano -- gitster --于2016年10月26日commit bfe800c合并)

  

通过" libsecret "进行对话的新凭据帮助程序已将{XDG Secret Service API的实现添加到contrib/credential/

     

它使用libsecret,它可以支持XDG Secret的其他实现   服务API。

  1. 您可以使用以下命令安装libsecret和开发库。

    sudo apt-get install libsecret-1-0 libsecret-1-dev

  2. 然后您需要构建凭据管理器

    cd /usr/share/doc/git/contrib/credential/libsecret(从source复制凭据/ libsecret 文件夹(如果未自动安装)

    sudo make

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

    git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

  4. 正如mati865中的the comments所述:

      

    应该注意的是,像Arch和Fedora这样的一些发行版提供了二进制和源代码的辅助工具。

         
        
    • Arch上的Libsecret二进制文件:/usr/lib/git-core/git-credential-libsecret
    •   
    • Fedora上的Libsecret二进制文件:/usr/libexec/git-core/git-credential-libsecret
    •   

答案 1 :(得分:2)

使用sudo以root身份运行命令。这就像问你的系统管理员,如果有的话,为你运行一个命令。 root用户意味着执行任何与开发相关的操作,因此git 意味着用作root。

一旦您以另一个用户(root或任何其他用户)运行命令,预计此其他用户无法与您的普通用户正常通信(特别是,它在此处找不到您的gnome-keyring-daemon )。

所以,答案是:"不要这样做"。如果您确实需要在特定目录中克隆,请按照CodeWizard的答案中的建议为自己授予该目录的权限。实际上,如果你需要在你没有获得许可的目录中克隆,问问自己你是否做错了什么:原则上,这不应该发生(我的猜测是:你已经使用过{{1过去太多了,这就是你在这里和那里有um-writable目录的原因。)

答案 2 :(得分:0)

  

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

您尝试克隆存储库的文件夹是由root创建的,因此您没有权限编写或在其下创建文件夹,除非您是root(sudo),请设置权限({{1 }或chmod)您将能够克隆到文件夹中。

chown