如何为两个GitLab账户设置两个SSH密钥并使用TortoiseGit推送/拉取?

7

目前我正在使用GitLab作为我的远程GIT服务器。
我可以使用单个带有SSH密钥的Gitlab账户,没有问题。

但是现在我申请了另一个Gitlab账户,我想尝试使用相同的SSH密钥,但是我无法将该密钥添加到此新账户中。
当我尝试添加密钥时,错误如下:

已经拥有该密钥
指纹已经被占用

那么我应该如何使用相同的密钥访问第二个Gitlab账户? 如果不可能,我应该如何同时使用两个密钥。

顺便说一下,我正在使用Windows系统。

提前感谢!!

更新

下面是我的配置文件。它如下所示:

#my primary account
Host {account1}
    User git
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa1

#for NPR_HPTG account
Host {account2}
    User git
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa2

我有两个Gitlab账户,
git@gitlab.com:{account_1}/repo1.git
git@gitlab.com:{account_2}/repo1.git

但是,我无法访问account_2

在拥有第二个GitLab帐户之前,我只需将ssh密钥上传到account1而不需要设置这个。但现在按照此方法操作后,最终我仍然无法推送到git@gitlab.com:{account_2}/repo1.git。我正在使用TortoiseGit进行推送/拉取。


我认为这是最干净的解决方案- https://dev59.com/CFoU5IYBdhLWcg3w_KmO#52816828 - Avisek Chakraborty
1个回答

21

只需在%HOME%/.ssh/config文件中声明每个私有SSH密钥:

Host gitlabuser1
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa1

Host gitlabuser2
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa2

假设您的SSH密钥集合如下:

%HOME%/.ssh/id_rsa1 ; %HOME%/.ssh/id_rsa1.pub
%HOME%/.ssh/id_rsa2 ; %HOME%/.ssh/id_rsa2.pub

接下来,您可以使用克隆/推送/拉取的 URL:

gitlabuser1:yourRepo1
gitlabuser2:yourRepo2

确保你的 CMD 会话已经定义了 %HOME%,一般为 %USERPROFILE% (使用git-cmd.bat会自动完成)。

你可以在这篇博客文章中找到更详细的步骤。


我倾向于相信仅仅写上 IdentityFile id_rsa2 就应该从 ~/.ssh/ 中选择那个 id_rsa2 文件,从而自动地做正确的事情。我会尝试并查看。 - kostix
gitlabuser1的正确格式应该是什么?类似于这样:git@gitlab.com:my_username吗? - 2342G456DI8
1
那么关于 {hostname},它也是相同的吗,应该也是 git@gitlab.com 吧? - 2342G456DI8
@GordonQu 请修正 Host 值,并添加 User git - VonC
2
如果你使用 Host {account2},那么要使用的URL是 {account_2}:{account_2}/repo1.git。不用管git@gitlab.comHost是一个关键字。如果你已经设置了Hostxxx2,那么URL将会是xxx2:{account2}/repo1.git - VonC
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接