![将 git 与 gnome-keyring 和 http(s) repos 一起使用的正确方法是什么?](https://linux22.com/image/990395/%E5%B0%86%20git%20%E4%B8%8E%20gnome-keyring%20%E5%92%8C%20http(s)%20repos%20%E4%B8%80%E8%B5%B7%E4%BD%BF%E7%94%A8%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
目前,每当我git pull
或git push
进入 http(s) 存储库时,我都会得到以下信息:
$ git pull
Username for 'https://gitrepos.reposdomain.com': [email protected]
Password for 'https://[email protected]@gitrepos.reposdomain.com':
这对于不频繁使用来说还好,但很快就会变得非常烦人。 不幸的是,在这种情况下,切换到 ssh 不是一个选择。
我读到过早期版本git
提供了凭证“存储”和“缓存”,但不建议这样做,因为它以纯文本形式存储密码。
但
的较新版本git
显然将 git 凭证存储在中gnome-keyring
,但必须正确设置。
我尝试过按照其他(非 Ubuntu)的答案来让它工作(即这个),但仍然显示用户名和密码提示。
存储 http(s) repos 凭据的正确和最安全的方法是什么git
,以及如何使它们在 Ubuntu 上运行?
答案1
git-credential-gnome-keyring
现已弃用。
相反,使用秘密。如果您的机器上尚未预安装,请按照以下步骤操作:
确保
libsecret
其开发库已安装:sudo apt install libsecret-1-0 libsecret-1-dev
然后从 libsecret 开发库附带的源构建凭证助手:
sudo make --directory=/usr/share/doc/git/contrib/credential/libsecret
最后,将新编译的二进制文件注册为Git 凭证助手:
git config --global credential.helper \ /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
答案2
您需要设置 gitcredential helper
使用 Gnome Keyring:
安装并编译 Gnome Keyring devel:
sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
并设置凭证:
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
答案3
这种简单的方法在我的 Ubuntu 18.04.1 和 git 2.17.1 上似乎就足够了:
git config --global credential.helper cache
您可以像这样指定一小时(= 3600 秒)的超时:
git config --global credential.helper 'cache --timeout=3600'
进一步阅读精美手册。
答案4
尝试git-credential-oauth,可用Ubuntu Lunar 及更高版本。
不再需要密码!不再需要个人访问令牌!不再需要 SSH 密钥!
git-credential-oauth 是一个 Git 凭证助手,它使用 OAuth 安全地向 GitHub、GitLab、BitBucket 和 Gerrit 进行身份验证。
首次推送时,助手将打开浏览器窗口进行身份验证。存储有效期内的后续推送无需交互。
安装:
sudo apt-get install git-credential-oauth
配置:
git config --global --unset-all credential.helper
git config --global --add credential.helper "cache --timeout 7200" # two hours
git config --global --add credential.helper oauth
如果您已经安装了它,您还可以使用 git-credential-libsecret 作为 git-credential-cache 的替代存储。