如何使用多个ssh密钥用于具有相同主机的多个gitlab帐户

时间:2016-06-18 09:48:54

标签: git ssh gitlab ssh-keys

我想在Gitlab网站中使用2个帐户,每个帐户使用不同的ssh密钥

我成功生成了密钥并将其添加到~/.ssh文件夹中 我创建了~/.ssh/config文件并使用其中一个,它运行良好 我也可以通过编辑~/.ssh/config文件

在两个键之间进行交换

问题是:我想在同一时间使用它们,但我找到的所有教程都采用了不同的主机:/

实际上我的两个帐户都在同一个主机

如何编辑~/.ssh/config文件以接受同一主机的两个帐户

注意:我看了this question,但我无法从中获得帮助

我的两个帐户是username1username2 repo URL看起来像:git@gitlab.com:username1/test-project.git

我当前的~/.ssh/config档案:

Host gitlab.com-username1
  HostName gitlab.com
  User git
  IdentityFile ~/.ssh/id_rsa

Host gitlab.com-username2
  HostName gitlab.com
  User git
  IdentityFile ~/.ssh/id_rsa_username2

更新1:

1)当我在~/.ssh/config文件中使用一个键时,一切都很完美(但每次我想要更改我使用的用户时更新它都很无聊)

2)当我使用这一行时 ssh -T git@gitlab.com-username1 ssh -T git@gitlab.com-username2 它的作品很好,并回复了一个欢迎的消息

从1)和2),我认为问题肯定来自~/.ssh/config文件,特别是Host变量

更新2 :(解决) 解决方法是编辑.git/config文件 [remote "origin"] url = git@gitlab.com:username1/test-project.git[remote "origin"] url = git@gitlab.com-username1:username1/test-project.git

并对username2

执行相同的操作

2 个答案:

答案 0 :(得分:14)

您已完成ssh配置。首先,检查它是否有效:

ssh -T git@gitlab.com-username1
ssh -T git@gitlab.com-username2

在两种情况下都应该成功。如果没有,则表示键未正确设置。验证各个用户的密钥是否在gitlab上。

如果有效,请转到您的git存储库并打开.git/config。它将有一些像:

[remote "origin"]
  url = git@gitlab.com:username1/test-project.git

将其替换为

[remote "origin"]
  url = git@gitlab.com-username2:username1/test-project.git

(或username1如果您想使用此用户名进行连接)。然后它应该允许你推。

答案 1 :(得分:2)

使用上面的确切~/.ssh/config并将您使用git的网址更新为第一位用户git@gitlab.com-username1:username1/test-project.git,第二位用户更新git@gitlab.com-username2:username2/test-project.git(例如git clone git@gitlab.com-username1:username1/test-project.git

SSH将在gitlab.com-username1中查找~/.ssh/config别名,并使用正确的主机名和SSH密钥文件。

另一种方法是只使用一个用户进行推/拉,并为这一个用户授予所需权限。