使用gnome-keyring作为Sudo的Git凭证助手时出错

i2loujxw  于 2023-05-12  发布在  Git
关注(0)|答案(3)|浏览(128)

我正在寻找一种方法来安全地存储凭据,同时连接到我们的Git服务器,它使用SSL。我偶然发现了@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 version 1.9.1 - Ubuntu Server 14.0.4
感谢您的评分-Richard O.

4si2a6ki

4si2a6ki1#

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

2022选项:git-credential-manager

Microsoft提供了一个名为**GCM (Git Credential Manager)**的跨平台凭据助手,您可以安装(无需构建)并配置:

git-credential-manager-core configure

你需要Git 2.27+才能使用它。

2016选项:git-credential-libsecret

Git 2.11+(Q4 2016)包含了一个使用**libsecret**的新凭证助手。
参见commit 87d1353(2016年10月9日)by Mantas Mikulėnas ( grawity )
(由Junio C Hamano -- gitster --合并于commit bfe800c,2016年10月26日)
contrib/credential/中添加了一个新的凭据帮助器,它通过“libsecret”与XDG Secret Service API的实现进行对话。
它使用libsecret,可以支持XDG Secret Service API的其他实现。
但到了2022年,就不再需要了。见上文
正如mati865在评论中所指出的:
需要注意的是,一些发行版(如Arch和Fedora)提供了可作为二进制和源代码使用的帮助程序。

dnf install git-credential-libsecret

Git 2.41(Q2 2023)澄清了:
参见commit 0a3a972commit 64f1e65commit de2fb99commit 048b673commit 5747c80commit 71201abcommit 16b305c(2023年5月1日)by Taylor Blau ( ttaylorr )
(由Junio C Hamano -- gitster --合并于commit fbbf60a,2023年5月10日)

contrib/credential:删除“gnome-keyring”凭据帮助程序

共同撰写人:杰夫·金
签字人:杰夫·金
签字人:泰勒·布劳
libgnome-keyring在2014年被弃用(支持libsecret),more than nine years ago
自2013年以来,使用libgnome-keyring实现的凭证助手只有少数提交,没有实现或更改任何功能。
最近一次在这个领域做大量工作的提交是15f7221(“contrib/git-credential-gnome-keyring.c:支持非常古老的gnome-keyring”,2013-09-23,Git v1.8.5-rc 0--merge),仅仅是九年前的事情。
这个凭据助手遭受了与上一次提交相同的fgets()相关的注入攻击(使用新的“wwwauth[]”特性)。
与其修补它,不如将这个helper作为已弃用的helper移除。

6g8kf2rb

6g8kf2rb2#

使用sudo以root用户身份运行命令。这就像要求系统管理员(如果有的话)为您运行一个命令。root用户 * 不 * 打算做任何与开发相关的事情,因此git * 不 * 打算用作root用户。
一旦你以另一个用户(root或任何其他用户)的身份运行一个命令,这个用户就不能和你的普通用户正常通信(特别是,它在这里找不到你的gnome-keyring-daemon)。
所以,答案是:“别这样”如果你真的需要在一个特定的目录下进行克隆,请按照CodeWizard的回答中的建议,给予自己该目录的权限。实际上,如果你需要在一个你没有权限的目录中克隆,问问自己是否做错了什么:原则上,这不应该发生(我猜测是:你已经使用sudo在过去太多,这就是为什么你有um-writable目录在这里和那里).

k2arahey

k2arahey3#

我有时需要运行sudo git clone,因为有时我需要制作克隆的目录需要它。任何帮助都将不胜感激
您尝试将存储库克隆到的文件夹是由root创建的,因此您没有权限在其下写入或创建文件夹,除非您是root(sudo),设置权限(chmodchown),您将能够克隆到该文件夹中。

chmod 755 /path

相关问题