我一直在寻找一种在连接到使用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
提前谢谢! -Richard O。
答案 0 :(得分:55)
除了使用sudo之外,请注意,在2016年,libgnome-keyring
特定于GNOME,现已弃用(自January 2014, actually起)。
Git 2.11 +(2016年第4季度)将使用 libsecret
包含新的凭据帮助程序。
commit 87d1353见Mantas Mikulėnas (grawity
)(2016年10月9日)
(Junio C Hamano -- gitster
--于2016年10月26日commit bfe800c合并)
通过" libsecret "进行对话的新凭据帮助程序已将{XDG Secret Service API的实现添加到
contrib/credential/
。它使用
libsecret
,它可以支持XDG Secret的其他实现 服务API。
您可以使用以下命令安装libsecret
和开发库。
sudo apt-get install libsecret-1-0 libsecret-1-dev
然后您需要构建凭据管理器
cd /usr/share/doc/git/contrib/credential/libsecret
(从source复制凭据/ libsecret 文件夹(如果未自动安装)
sudo make
最后,您应该将 git 指向配置中新创建的文件:
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
正如mati865中的the comments所述:
应该注意的是,像Arch和Fedora这样的一些发行版提供了二进制和源代码的辅助工具。
- Arch上的Libsecret二进制文件:
/usr/lib/git-core/git-credential-libsecret
和- Fedora上的Libsecret二进制文件:
/usr/libexec/git-core/git-credential-libsecret
。
答案 1 :(得分:2)
使用sudo
以root身份运行命令。这就像问你的系统管理员,如果有的话,为你运行一个命令。 root
用户不意味着执行任何与开发相关的操作,因此git
不意味着用作root。
一旦您以另一个用户(root或任何其他用户)运行命令,预计此其他用户无法与您的普通用户正常通信(特别是,它在此处找不到您的gnome-keyring-daemon )。
所以,答案是:"不要这样做"。如果您确实需要在特定目录中克隆,请按照CodeWizard的答案中的建议为自己授予该目录的权限。实际上,如果你需要在你没有获得许可的目录中克隆,问问自己你是否做错了什么:原则上,这不应该发生(我的猜测是:你已经使用过{{1过去太多了,这就是你在这里和那里有um-writable目录的原因。)
答案 2 :(得分:0)
我有时需要运行sudo git clone,因为有时我需要进行克隆的目录需要它。任何帮助将不胜感激
您尝试克隆存储库的文件夹是由root创建的,因此您没有权限编写或在其下创建文件夹,除非您是root(sudo
),请设置权限({{1 }或chmod
)您将能够克隆到文件夹中。
chown