使用git作为Sudo的gnome-keyring时,出现错误

我正在寻找一种方法来安全地存储凭据,同时连接到我们使用SSL的Git服务器。 我碰到@ james-ward的这个build议(只编辑我做的是我更新了我们的“系统”configuration,而不是我们的Git的“全局”configuration( 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服务器14.0.4

先谢谢你! 理查德·O

Solutions Collecting From Web of "使用git作为Sudo的gnome-keyring时,出现错误"

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

你试图克隆版本库的文件夹是由root创建的,所以你没有权限写或创建它下面的文件夹,除非你是root( sudo ),设置权限( chmodchown ),你将能够克隆到文件夹中。

 chmod 755 /path 

除了使用sudo之外,请注意,在2016年, libgnome-keyring特定于GNOME,现在已被弃用( 实际上自2014年1月起)。

Git 2.11+(Q4 2016)将包含一个使用libsecret的新证书助手。

参见[commit 87d1353]( https://github.com/git/git/commit/87d1353a6a133aafd2ef29ba6c740a8d3d71dadb )(2016年10月9日)作者: MantasMikulėnas( grawity ) 。
(由Junio C gitster合并- gitster – in [commit bfe800c]( https://github.com/git/git/commit/bfe800c9d758b4dd760e8457bc79d35362b1effd ),2016年10月26日)

通过“ libsecret ”与XDG秘密服务API的实现进行对话的新证书助手已被添加到contrib/credential/

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

  1. 您可以使用以下方法安装libsecret和开发库:

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

  2. 那么你需要建立凭证管理器

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

    sudo make

  3. 最后,你应该把git指向你的配置中新建的文件:

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


正如mati865在评论中指出的那样 :

应该指出的是,像Arch和Fedora这样的发行版提供了可以作为二进制和源代码的助手。

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

使用sudo以root身份运行该命令。 这就像问你的系统管理员,如果你有系统管理员,为你运行一个命令。 root用户并不打算做与开发相关的任何事情,因此git 并不意味着被用作root。

一旦以另一个用户(root或任何其他用户)的身份运行某个命令,则希望这个其他用户不能与通常的用户正常通信(特别是在这里没有找到你的gnome-keyring-daemon)。

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