将 git 与 gnome-keyring 和 http(s) 存储库一起使用的正确方法是什么?

tu-*_*duh 63 password git gnome-keyring https

目前,每当我git pullgit push访问 http(s) 存储库时,我都会得到以下信息:

$ git pull
Username for 'https://gitrepos.reposdomain.com': me@mydomain.com
Password for 'https://me@mydomain.com@gitrepos.reposdomain.com': 
Run Code Online (Sandbox Code Playgroud)

这对于不经常使用是可以的,但很快就会变得非常烦人。 不幸的是,在这种情况下不能切换到 ssh。

我读过早期版本git提供了凭证“存储”和“缓存”,但不建议这样做,因为它以明文形式存储密码。

较新版本的gitgit 凭据显然存储在 中gnome-keyring,但必须正确设置。

我已经尝试在 SO 上遵循其他(非 Ubuntu)答案来使其工作(即这个),但我仍然看到用户名和密码提示。

git为 http(s)存储库存储凭据的正确和最安全的方法是什么,以及如何使它们在 Ubuntu 上工作?

edd*_*eek 97

gnome-credential-helper 现在已弃用。

相反,请使用libsecret。如果您的机器上尚未预装它,请使用以下步骤:

  1. 确保libsecret安装了它的开发库:

    sudo apt install libsecret-1-0 libsecret-1-dev
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后从 libsecret 的开发库附带的源构建凭证助手:

    sudo make --directory=/usr/share/doc/git/contrib/credential/libsecret
    
    Run Code Online (Sandbox Code Playgroud)
  3. 最后,将新编译的二进制文件注册为Git 凭证助手

    git config --global credential.helper \
       /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
    
    Run Code Online (Sandbox Code Playgroud)

有关/sf/answers/2821848221/ 的更多详细信息

  • 更新我的首选答案,因为我可以验证这在 18.04 上有效。:) (5认同)
  • 这似乎仍然是 2020 年 2 月的 A 计划。在 Ubuntu 19.10 上工作。 (3认同)
  • 您可能要注意,此解决方案仅适用于 git 版本 >= 2.11(然后可以找到 libsecret 目录) (2认同)
  • 这安全吗?秘密存储在哪里?传输和存储是否安全?有官方文档吗?显然,根据[此页面](https://launchpad.net/ubuntu/+source/libsecret)和[此页面](https://developer.gnome.org/libsecret/),它位于“Main”中,并且由 Debian/Ubuntu 维护。并且:“它使用 DBus 与‘特勤局’进行通信。” (2认同)

小智 45

您需要credential helper使用 Gnome Keyring设置 git :

安装并编译 Gnome Keyring 开发:

sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
Run Code Online (Sandbox Code Playgroud)

并设置凭据:

git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
Run Code Online (Sandbox Code Playgroud)