Linux 将gnome keyring用作Sudo时使用Git凭据帮助程序时出错

Linux 将gnome keyring用作Sudo时使用Git凭据帮助程序时出错,linux,git,ubuntu,gnome-keyring-daemon,Linux,Git,Ubuntu,Gnome Keyring Daemon,我正在寻找一种在连接到使用SSL的Git服务器时安全存储凭据的方法。我是@james ward提出这个建议的(我唯一做的编辑就是更新了我们的“系统”配置,而不是Git()的“全局”配置) 然后我就可以跑了 git clone https://ipaddress/git/repo.git 但是,当我运行以下操作时,凭据助手将存储我的凭据: sudo git clone https://ipaddress/git/repo.git testfolder 它给了我以下的错误 ** (process

我正在寻找一种在连接到使用SSL的Git服务器时安全存储凭据的方法。我是@james ward提出这个建议的(我唯一做的编辑就是更新了我们的“系统”配置,而不是Git()的“全局”配置)

然后我就可以跑了

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服务器14.0.4

提前谢谢你! -理查德O

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

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

chmod 755 /path

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

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


所以,答案是:“不要这样做”。如果你真的需要在一个特定的目录中进行克隆,按照CodeWizard的回答中的建议,给自己在该目录上的权限。实际上,如果你需要在一个你没有权限的目录中进行克隆,问问自己是否做错了什么:原则上,这不应该发生(我的猜测是:您在过去已经使用了太多的
sudo
,这就是为什么您在这里和那里都有um可写目录的原因)。

除了sudo的使用之外,请注意,2016年,
libgnome keyring
是特定于GNOME的,现在已经被弃用(自那时起)

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

参见(2016年10月9日)作者。
(于2016年10月26日合并)

contrib/credential/
中添加了一个通过“libsecret”与XDG秘密服务API实现对话的新凭证帮助程序

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

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

    sudo apt get安装libsecret-1-0 libsecret-1-dev

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

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

    sudo make

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

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


  • 如中所述:

    应该注意的是,一些发行版,如Arch和Fedora,提供了二进制和源代码的帮助程序

    • Arch上的Libsecret二进制文件:
      /usr/lib/git-core/git-credential-Libsecret
      ,以及
    • Fedora上的Libsecret二进制文件:
      /usr/libexec/git core/git credential Libsecret
    注意:如注释中所述,您需要使用该二进制文件安装额外的软件包,因为:


    感谢您的帮助,这很有意义。另一个要求迫使我使用SSH密钥而不是HTTPS,因此我不再需要使用git credential gnome密钥环。但我确实确保创建一个专用git帐户,并允许他们在特定目录中创建自己的存储库,而无需基于您的帮助使用sudo很好用!谢谢你的评论。问自己“为什么”使用sudo一直是一个很好的习惯。尝试使用这个,第一次似乎效果不错,但是在我的靴子上我得到了
    **(过程:774):CRITICAL**:secret\u value\u get\u text:assertion'value'failed'
    并再次询问我的github密码…在此之后,当使用git时,我获取
    **(进程:18000):CRITICAL**:无法连接到特勤局:无法在没有X11$DISPLAY的情况下自动启动D-Bus
    如果您使用的是较旧版本的git,则/usr/share/doc/git/contrib/credential/libsecret目录将不存在。如果可以更新git,则在Ubuntu上这可以实现:关于上面的第2点:在安装libsecret et all之后,在poin中使用apt get as在Unbuntu 16.04上,上面的T1中,
    contrib
    中没有
    libsecret
    目录:
    $ls/usr/share/doc/git/contrib/credential
    gnome keyring netrc osxkeychain wincred
    @agent18多个秘密?libsecret管理的映射:一个新秘密只是此映射中的一个条目。可能的重复项
    chmod 755 /path
    
    dnf install git-credential-libsecret