0

我正在尝试在我的计算机上设置多个 Github.com 帐户。我已经按照 本教程以及这里的这个教程进行操作。但是,我遇到了问题。我正在开发 Windows 上的 Unbuntu Linux 子系统。

我的 ssh 配置文件如下:

# personal git hub
Host github.com
    Hostname github.com
    User git
    IdentityFile ~/.ssh/id_ecdsa_gh

# work git hub
Host github-work
    Hostname github.com
    User git
    IdentityFile ~/.ssh/id_ecdsa

问题是,如果我将我的个人(主要)github 帐户的主机指定为github.com并推送与此帐户关联的存储库,那么此帐户的一切正常。但是,工作帐户不再有效,我在终端收到一条消息说Please make sure you have the correct access rights and the repository exists.

如果我然后更改我的config文件并将个人帐户的主机指定为类似的东西,personal那么它不再起作用,但我的工作帐户将开始正常工作。如果我同时更改了这两个主机,github.com那么我的工作帐户可以推送,但我的个人帐户无法识别。如果我将两者都设置为,github.com那么我的个人帐户将再次起作用,而我的工作帐户则不起作用。

除了上述更改主机名的测试外,我还尝试过删除和更新密钥,但不起作用。我还尝试通过使用ssh -T myname-gitand测试 git 是否可以识别 ssh 密钥ssh -T work-git。在这样做时,我会收到消息告诉我Hi [account name] successfully authenticated, but Github does not provide shell access。所以这些键都可以正常工作并且被 Github 识别。我真的不确定是什么原因造成的。我已经清除并重新添加了密钥ssh-add并且我检查了我正在使用的存储库在本地与正确的帐户相关联,并且没有意外与错误的帐户相关联的提交。此外,我检查了 Windows 上的全局帐户和 Linux 子系统上的全局帐户是否都设置为我的个人帐户的凭据。我也通过堆栈上的问答来查看类似的问题,但没有一个建议的方法为我解决了这个问题。

谁能建议可能出了什么问题以及我该如何解决?

谢谢阅读。

4

2 回答 2

1

解析 SSH 配置文件的方式,应用与主机名匹配的第一行/块,并且不处理文件的其余部分。比赛在主机线上完成;您需要做git clone git://git@github-work/user/repo.git(可能没有git@)来指示它使用第二个配置。

于 2022-01-25T14:15:42.930 回答
0

我终于想通了,我发布了一个答案,以防有人像我一样被卡住。

配置 ssh 配置文件如下:

# personal git hub
Host github.com-personal
    Hostname github.com
    User git
    IdentityFile ~/.ssh/id_ecdsa_gh

# work git hub
Host github.com-work
    Hostname github.com
    User git
    IdentityFile ~/.ssh/id_ecdsa

然后导航到您正在处理的任何存储库并[remote "origin"]通过vim .git/config打开文件(或您喜欢的任何文本编辑器)进行修改。然后修改它,使其对应于正确的 github 密钥。例如,为了使其与我的工作帐户相对应,我将其编辑为如下所示:

[remote "origin"]
        url = git@github.com-work:work/myRepo.git

其中github.com-work orgithub.com-personal对应于Host您的配置文件部分中为相应键提供的名称。

于 2022-01-25T16:47:54.923 回答