为Git保存多个密码帐户?

0yycz8jy  于 2023-05-05  发布在  Git
关注(0)|答案(2)|浏览(175)

我知道这样做有点痛苦,但我有多个账户,包括我的个人账户和工作账户。我为这些帐户生成令牌,因此它们的访问受到限制,我不必使用我的实际密码,因此更安全。我遇到的问题是,似乎没有一个很好的方法来存储多个帐户的这些密码。这适用于Windows和Linux。我发现的“最简单”的方法就是在系统上有多个用户帐户,这并不方便。否则,如果你有一个仓库,你尝试使用git config user.name等设置用户,它将使用错误的密码/帐户,无论如何该仓库。
有没有更简单或更好的方法来解决这个问题?要为git保存多个密码,并且能够选择要用于存储库的帐户并使其正常工作?

erhoui1w

erhoui1w1#

人们解决这个问题的最常见方法是:git config --global credential.useHttpPath true-并且在每个存储库的凭证存储中具有不同的用户/通行证记录。但是如果你有大量的回购,这会很快污染凭证存储,使它不是一个很好的解决方案。
你最终会得到这样的记录:

git:https://PersonalAccessToken@github.com/YourUsername/YourRepo1.git
git:https://PersonalAccessToken@github.com/YourUsername/YourRepo2.git
git:https://PersonalAccessToken@github.com/YourUsername/YourRepo3.git
git:https://github.com/YourUsername/YourRepo1.git
git:https://github.com/YourUsername/YourRepo2.git
git:https://github.com/YourUsername/YourRepo3.git

我更喜欢使用credential.namespace git config选项来解决这个问题。想法是为不同的帐户创建不同的名称空间,这样它们就不会在系统凭据管理器中冲突。
例如(使用github.com作为示例url),您可以决定其中一个帐户是您的主帐户,并在全局git config中设置它:

git config --global credential.namespace "MainAccount"
git credential approve
url=https://github.com
username=YourMainAccUsername
password=YourMainAccPasswordOrToken
<Enter>

然后输入repo,您希望使用不同的凭据登录并在本地进行设置:

cd path/to/other/repo
git config credential.namespace "OtherAccount"
git credential approve
url=https://github.com
username=YourOtherAccUsername
password=YourOtherAccPasswordOrToken
<Enter>

您可以在凭据管理器中验证,您应该有两个新记录:

MainAccount:https://github.com/
OtherAccount:https://github.com/

你可以在命令提示符中验证哪些凭证将被发送到git服务器:

git credential fill
url=https://github.com
<Enter>
z9gpfhce

z9gpfhce2#

您可以考虑使用凭据助手,如最近(2020年7月)的GCM Coreannounced by GitHub
Git Credential Manager Core(GCM Core)是一个基于.NET Core构建的安全Git凭据助手,可在Windows和macOS上运行。
Linux的支持已经计划好了,但还没有安排。
对于Linux,您可以使用Java GCM
(see最后一节)
在这两种情况下,用法是相同的:您可以缓存给定URL的凭据(如令牌)。
更新9月2020年(2个月后)Linuxmicrosoft/Git-Credential-Manager-Core issue 135提到,来自GitHubber Matthew John Cheetham
我们有一个支持Linux的pre-release of a GCM Core!🥳
目前我们提供了一个Debian软件包和一个git-credential-manager-core单二进制文件的tarball。
.deb目前未签名,除了GitHub之外,没有上传到任何地方。
我们正在设置软件包签名,并将其发布到官方Microsoft提要(因此您将能够使用apt-get!).
目前,预构建的二进制文件仅为64位英特尔处理器提供。
查看更多Credential stores on Linux
Git Credential Manager Core(GCM Core)在Linux平台上管理的凭据存储目前有三种选项:

  • freedesktop.org秘密服务API
  • GPG/pass兼容文件
  • 明文文件

2021年8月更新:issue 135现已由Matthew John Cheetham(GitHub员工)关闭:
解决此问题,因为GCM Core现在可以在Linux发行版上运行
如需了解更多问题/错误,或支持更多发行版,请打开新问题。谢谢!

相关问题