如何为同一主机的多个 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,但我无法从中获得帮助
我的两个帐户是username1
和username2
回购 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.com
和 ac2.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中选择帐户?