如何为同一主机的多个 gitlab 帐户使用多个 ssh 密钥[重复]

Posted

技术标签:

【中文标题】如何为同一主机的多个 gitlab 帐户使用多个 ssh 密钥[重复]【英文标题】:How to use multiple ssh keys for multiple gitlab accounts with the same host [duplicate] 【发布时间】:2016-10-20 02:52:07 【问题描述】:

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

我成功生成了密钥并将它们添加到~/.ssh 文件夹中 我创建了~/.ssh/config 文件并使用其中一个,效果很好 我还可以通过编辑~/.ssh/config 文件在两个键之间进行交换

问题是:我想同时使用它们,但是我发现所有关于不同主机的教程:/

其实我的两个账号在同一个主机

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

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

我的两个帐户是username1username2 回购 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做同样的事情

【问题讨论】:

我读过它,我在谈论不同的帐户,在我的情况下,我想在同一个主机上这样做:/ "我想在 Gitlab 网站上使用 2 个账号"???副本使用的是同一个主机(你只需要用gitlab替换github。只有github上有。 它使用 github.comac2.github.com 但在我的情况下同样是 gitlab.com 没有子域 它只是~/.ssh/config 中定义的github.com 的别名。没有ac2.github.com 好的,但在 gitlab 中它是不同的:/ 无论如何你能帮我如何用 gitlab 做吗? 【参考方案1】:

您已经完成了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,如果您想使用此用户名进行连接)。然后它应该允许你推动。

【讨论】:

前两行返回 GitLab: Disallowed command 和 somethims ssh: Could not resolve hostname gitlab.com-username1: Name or service not known 当我编辑 ~/.ssh/config 文件时会发生差异,但无论如何键都可以,因为当我在 ~/.ssh/config 中使用一个键时Host gitlab.com HostName gitlab.com User git IdentityFile ~/.ssh/id_rsa 代码运行良好:/ 并将提交推送到 gitlab,所以我认为问题出在配置文件中:/ ` 也许没有verify。但是,是的,看起来还可以。所以修复配置文件。还是还有什么不清楚的地方? 是的,我该如何修复配置:/,我会尝试不验证 用您的.git/config 中的相关行以及您更改的内容更新问题。 成功了,解决方法是将.git/config文件从[remote "origin"] url = git@gitlab.com:username1/test-project.git编辑成[remote "origin"] url = git@gitlab.com-username1:username1/test-project.git【参考方案2】:

使用上面的确切 ~/.ssh/config,并将您在 git 中使用的 URL 更新为第一个用户的 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 将在 ~/.ssh/config 中查找 gitlab.com-username1 别名,并将使用正确的主机名和 SSH 密钥文件。

另一种方法是只使用一个用户进行推送/拉取,并向该用户授予所需的权限。

【讨论】:

问题现在解决了吗? 您发布的 cmets 表明您做错了。我更新了我的答案。不要更新.ssh/config 文件,使用您在问题中发布的文件。然后对于所有 git 操作,不要单独使用gitlab.com,而是使用定义的别名,即.ssh/config 中的Host 行。请添加如何调用 git 作为评论,我想错误就在那里。 您在 ,ssh/config 中更改了主机行,这是错误的!它不能包含路径。并且您需要将 git 远程 url 更新为刚刚定义的别名。请重新阅读我的答案。 那么,有什么消息吗?现在工作吗? ok .ssh/config 似乎是正确的。您是否尝试过克隆或更新遥控器?

以上是关于如何为同一主机的多个 gitlab 帐户使用多个 ssh 密钥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

同一主机设置多个密钥与不同github账号关联,或同一主机同一密钥分别关联github和gitlab

如何为 Github 帐户和 Bitbucket 公司帐户添加多个 SSH 密钥

如何为具有多个帐户的用户在Google App Scripts中选择帐户?

如何为我的新 gitlab 帐户生成新的 ssh-key?

markdown 如何为两个GitLab帐户设置两个SSH密钥

如何为同一服务使用@Autowired 注解两个或多个不同的组件类?