Linux 将gnome keyring用作Sudo时使用Git凭据帮助程序时出错
我正在寻找一种在连接到使用SSL的Git服务器时安全存储凭据的方法。我是@james ward提出这个建议的(我唯一做的编辑就是更新了我们的“系统”配置,而不是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
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