0

我见过一些类似的问题(实际上已经尝试过我见过的每一个问题的解决方案),但没有一个能解决这个问题。本质上,我想推送到两个不同的 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)的第一行更改为 just Host github.com,我可以突然推送到帐户 user2!我只是...无法推送到 user1。我得到了上述错误的相反,现在Permission to user1/repo.git denied to user2.

我尝试过:
两者都设置为Host github.com,但这会使我回到原来的问题(只能以 user1 身份推送。)

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

git config user.nameuser.email为每个回购设置正确的值。User2 使用本地配置,而 User1 使用全局配置,但我认为这不是问题,因为我无需调整即可推送到两者。

我已经在这两个节中添加了PreferredAuthentications publickeyIdentitiesOnly yes,以及我在其他人的此文件配置中看到的其他一些节,但没有一个更改了获取输出的错误。

Control Panel > Manage Windows Credentials没有与之关联的 GitHub 凭据(我检查过,没有任何凭据,没有任何内容被更改/删除)

4

1 回答 1

0

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

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

这记录在Git FAQ中。

于 2022-01-19T22:31:41.287 回答