user1/repo 的权限被 user2 拒绝,每次不更改设置就无法推送到两个帐户

Permission to user1/repo denied to user2, can't push to two accounts without changing settings each time

我见过一些类似的问题(实际上我已经尝试过解决我见过的每一个问题)但是 none 已经解决了这个问题。本质上,我想推送到两个不同的 Github 帐户,而无需每次都更改我的配置文件。

我正在尝试从同一系统推送到两个不同的 Github 帐户,都使用 SSH。我通过 VSCode 使用 WSL。 ssh -T 适用于我的两个 RSA 文件,两个 Github 帐户都有相应的 SSH 密钥,当我的 .ssh/config 文件对每个文件都有特定设置时,我可以很好地推送到每个帐户。

我的 .ssh/config 文件如下所示:

# Personal Account
Host github.com-user1
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa
    
# Work Account
Host github.com-user2
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_user2

按原样,推送到帐户 user1 工作正常,但尝试推送到帐户 user2 时出现错误:

ERROR: Permission to user2/repo.git denied to user1.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

但是,如果我将第二节 (#Work Account) 的第一行更改为 Host github.com,我可以突然推送到帐户 user2!我只是...无法推送到 user1。我得到了上述错误的相反结果,现在 Permission to user1/repo.git denied to user2.

我试过了:
both 设置为 Host github.com,但这又使我回到原来的问题(只能作为 user1 推送。)

它似乎只是在它看到的 .ssh/config 文件中选择第一个节(同时优先考虑 Host github.com),但我需要它响应我从哪个帐户推送。

git config user.nameuser.email 被设置为每个 repo 的正确值。 User2 使用本地配置,而 User1 使用全局配置,但我不认为这是问题所在,因为我已经能够在不调整它的情况下推送到两者。

我已经将 PreferredAuthentications publickeyIdentitiesOnly yes 添加到这两个节,还有一些我在其他人对该文件的配置中看到的其他节,但是 none 已经更改了错误获取输出。

Control Panel > Manage Windows Credentials 没有与之关联的 GitHub 凭据(我检查过,没有,什么都没有 altered/removed)

~/.ssh/config 中设置该节后,您需要更改每个远程名称以使用 github.com-user1github.com-user2 作为 SSH 中的主机名URL。这是让它可靠工作的唯一方法,您可以通过 运行 git remote set-url NEW-URL.

更改现有遥控器(例如 origin)URL

另请注意,您还需要在每个节中使用 IdentitiesOnly yes 选项。

这在 the Git FAQ 中有记录。