多个gitlab用户帐户的多个密钥的SSH配置

ca1c2owp  于 2023-09-29  发布在  Git
关注(0)|答案(1)|浏览(106)

我在我的服务器上运行Gitlab CE,并使用几个不同的用户帐户按兴趣对我的存储库进行分组。问题出在SSH上。
我在Github上找到了以下解决方案:
https://gist.github.com/jexchan/2351996
在本指南中,只需在配置中使用具有相同主机名的不同主机。我想做的事都是小事一桩。但是这个解决方案不适用于Gitlab,至少对我来说不适用。
这个解决方案遍布网络。一个不太常用但对我有效的方法是:
https://gist.github.com/gubatron/d96594d982c5043be6d4
在第二个例子中,在ssh配置中分配子域名作为主机,并在git配置中使用相同的子域名。举个小例子:
SSH配置:

Host user1.git.mydomain.at
  HostName git.mydomain.at
  IdentityFile ~/.ssh/id_rsa_user1

Host user2.git.mydomain.at
  HostName git.mydomain.at
  IdentityFile ~/.ssh/id_rsa_user2

git:

git remote set-url origin [email protected]:user1/foo.git
git remote set-url origin [email protected]:user2/foo.git

可以看到,我必须手动更改每个repo url。我想避免这种情况,我更喜欢第一种解决方案。
我错过了什么重要的东西吗?

t5fffqht

t5fffqht1#

你两者都需要。

**假设:

1.用户名(非电子邮件)分别为user1user2
1.您已上载足够的公共(即.pub)密钥,其各自的私钥为user1_rsauser2_rsa
1.服务器url的格式为server.com(即server.com替换为bitbucket.orggithub.com等),则~/.ssh/config应包含:

Host server.com-user1
  HostName server.com
  User git
  IdentityFile ~/.ssh/user1_rsa

Host server.com-user2
  HostName server.com
  User git
  IdentityFile ~/.ssh/user2_rsa

**II.**在你的git目录中,假设你已经添加了一个名为origin的origin,并且在一个名为domain的域和一个名为project的项目中,那么git remote -v应该被配置为返回如下内容:

origin  [email protected]:domain/project.git (fetch)
origin  [email protected]:domain/project.git (push)
  • 您可以首先通过使用git remote add origin [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection) :domain/project.git添加远程目录来获得此输出。关键是额外的**-user1**,带破折号,在两个文件中匹配,并匹配您的 * 用户名 *。
  • 您也可以事后编辑.git/config,手动添加**-user1**。

相关问题