如何使用 libsecret 存储多个 Github 帐户(不是单个存储库)的凭据

如何使用 libsecret 存储多个 Github 帐户(不是单个存储库)的凭据

我正在尝试在 Ubuntu 18.04 上使用 2 个 github 帐户。我还使用个人访问令牌 (PAT)。按照我想要实现的设置。

  • 有 2 个 github 帐户 - 主帐户和在同一台电脑上工作。
  • 该目录内创建的所有存储库~/work/必须自动使用工作名称和电子邮件进行提交,而该目录之外的所有存储库必须使用主名称和电子邮件进行提交。
  • 使用 libresecret 记住两个帐户(主帐户和工作帐户)的个人访问令牌,以便将数据从本地推送到 github。
  • 使用个人访问令牌而不是 ssh。
  • 保存每个帐户的凭据而不是每个存储库(就像使用useHttpPath.

这就是我所做的。

第1步:添加github主账户

  1. $ git config --global user.name "Johnny"
  2. $ git config --global user.email [email protected]
  3. $ sudo apt install libsecret-1-0 libsecret-1-dev
  4. $ cd /usr/share/doc/git/contrib/credential/libsecret/
  5. $ sudo make
  6. $ git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

上面的内容允许我将代码推送到我的主 github 帐户,而无需一次又一次输入我的用户名和密码。我只需要输入一次,然后 libsecret 就会接管。

~/.gitconfig到这一点。

[user]
    name = Johnny
    email = [email protected]

[credential]
    helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

第 2 步:添加工作帐户

我希望~/work/目录内的所有存储库都与第二个 github 帐户关联。我进行以下更改 -

全局配置~/.gitconfig

[user]
    name = Johnny
    email = [email protected]

[credential]
    helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

工作特定配置~/work/.gitconfig

[user]
    name = John Doe
    email = [email protected]

现在,当我尝试推送我的工作代码时,出现以下错误。

remote: Permission to work_username/mywork.git denied to main_username.
fatal: unable to access 'https://github.com/work_username/mywork.git/': The requested URL returned error: 403

我通过拆分同一主机运行的多个存储库的凭证管理来解决这个问题。

  1. $ git config --global credential.github.com.useHttpPath true

最终的~/.gitconfig

[user]
    name = Johnny
    email = [email protected]

[credential]
    helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

[credential "github.com"]
    useHttpPath = true

问题

问题是,我必须为我创建的每个新存储库设置用户名和密码。帖子说我可以使用它,而不必每次都输入密码。

如何让我libsecret知道git根据存储库所在的目录使用不同的密码进行身份验证?使用 的提交名称/电子邮件已经发生这种情况IncludeIf。我也想以某种方式将其扩展到密码身份验证。

相关内容