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

2024-10-17 08:46:00
admin
原创
74
摘要:问题描述:我正在寻找一种在使用 SSL 连接到 Git 服务器时安全地存储凭据的方法。我偶然发现了 @james-ward 的这个建议(我所做的唯一编辑是我更新了我们的“系统”配置,而不是 Git 的“全局”配置(https://stackoverflow.com/a/14528360/6195194)sud...

问题描述:

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


解决方案 1:

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

2022 年选项:git-credential-manager

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

git-credential-manager-core configure

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

2022 年第四季度:GCM 现在是Git Credential Manager(不再是核心)

git-credential-manager configure

您需要 Git 2.38.1+ 才能使用它。


2016 年选项:git-credential-libsecret

Git 2.11+(2016 年第四季度)包含一个使用的新凭证助手libsecret

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

gitster

一个 新 的 凭证 助手 , 通过 " libsecret " 与 XDG 秘密 服务 API 的 实现 进行 对话 , 已经 添加 到contrib/credential/.

它使用libsecret可以支持XDG Secret Service API的其他实现。

但到 2022 年,这一要求将不复存在。见上文


正如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

Git 2.41 (2023 年第二季度) 澄清:

参见Taylor Blau ()的提交 0a3a972、提交 64f1e65、提交 de2fb99、提交 048b673、提交 5747c80、提交 71201ab、提交 16b305c (2023 年 5 月 1 日) 。(由Junio C Hamano ----于提交 fbbf60a中合并,2023 年 5 月 10 日)ttaylorr

gitster

contrib/credential:删除“gnome-keyring”凭证助手

合著者:Jeff King

签名者:Jeff King

签名者:Taylor Blau

libgnome-keyring 已于 2014 年弃用(取而代之libsecret),距今已有 9 年多。

自 2013 年以来,使用 libgnome-keyring 实现的凭证助手只有少量提交,但均未实现或更改任何功能。

最后一次在此领域做出实质性工作的提交是15f7221(“ contrib/git-credential-gnome-keyring.c: support really ancient gnome-keyring”,2013-09-23,Git v1.8.5-rc0 --merge),距今不到九年。

此凭证助手遭受与fgets()上一次提交相同的相关注入攻击(使用新的“wwwauth[]”功能)。

我们不会修补它,而是将此助手删除,因为它已弃用。

解决方案 2:

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

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

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

解决方案 3:

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

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

chmod 755 /path

解决方案 4:

更简单:尝试git-credential-oauth,它包含在许多 Linux 发行版中,包括Fedora、Debian和Ubuntu。

不再需要密码!不再需要个人访问令牌!不再需要 SSH 密钥!

Git 凭证助手,使用 OAuth 安全地向 GitHub、GitLab、BitBucket 和其他伪造机构进行身份验证。

首次推送时,助手将打开浏览器窗口进行身份验证。存储有效期内的后续推送无需交互。

这与您选择的任何存储助手兼容,例如 git-credential-cache 或 git-credential-libsecret(不幸的是不包含在 Ubuntu 中)。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用