40

我正在寻找一种在连接到使用 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

先感谢您!——理查德·O。

4

3 回答 3

111

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

Git 2.11+(2016 年第四季度)将包括一个使用libsecret.

请参阅Mantas Mikulėnas ( )的提交 87d1353(2016 年 10 月 9 日) 。(由Junio C Hamano 合并——提交 bfe800c中,2016 年 10 月 26 日)grawity
gitster

添加了一个新的凭证助手,它通过“ 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(如果没有自动安装,请从source复制credential/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.

注意:正如@rugk在评论中添加的那样,对于 Fedora 和 Git v2.25.2-1 或更高版本,您需要使用该二进制文件安装一个额外的包,因为它已从主 git 包中分离出来

dnf install git-credential-libsecret
于 2016-10-28T19:37:07.717 回答
3

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

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

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

于 2016-04-13T06:15:22.567 回答
2

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

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

chmod 755 /path
于 2016-04-13T01:08:50.027 回答