我正在寻找一种方法来安全地存储凭据,同时连接到我们的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.
3条答案
按热度按时间4si2a6ki1#
除了使用sudo之外,请注意,在2016年,
libgnome-keyring
是特定于GNOME的,现在已弃用(自January 2014, actually起)。2022选项:
git-credential-manager
Microsoft提供了一个名为**GCM (Git Credential Manager)**的跨平台凭据助手,您可以安装(无需构建)并配置:
你需要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)提供了可作为二进制和源代码使用的帮助程序。
/usr/lib/git-core/git-credential-libsecret
,以及/usr/libexec/git-core/git-credential-libsecret
。**注意:**正如@rugk在注解中添加的,for Fedora and Git v2.25.2-1 or higher,您需要安装一个额外的二进制包,因为it has been split from the main git package:
Git 2.41(Q2 2023)澄清了:
参见commit 0a3a972,commit 64f1e65,commit de2fb99,commit 048b673,commit 5747c80,commit 71201ab,commit 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移除。
6g8kf2rb2#
使用
sudo
以root用户身份运行命令。这就像要求系统管理员(如果有的话)为您运行一个命令。root
用户 * 不 * 打算做任何与开发相关的事情,因此git
* 不 * 打算用作root用户。一旦你以另一个用户(root或任何其他用户)的身份运行一个命令,这个用户就不能和你的普通用户正常通信(特别是,它在这里找不到你的gnome-keyring-daemon)。
所以,答案是:“别这样”如果你真的需要在一个特定的目录下进行克隆,请按照CodeWizard的回答中的建议,给予自己该目录的权限。实际上,如果你需要在一个你没有权限的目录中克隆,问问自己是否做错了什么:原则上,这不应该发生(我猜测是:你已经使用
sudo
在过去太多,这就是为什么你有um-writable目录在这里和那里).k2arahey3#
我有时需要运行sudo git clone,因为有时我需要制作克隆的目录需要它。任何帮助都将不胜感激
您尝试将存储库克隆到的文件夹是由root创建的,因此您没有权限在其下写入或创建文件夹,除非您是root(
sudo
),设置权限(chmod
或chown
),您将能够克隆到该文件夹中。