【发布时间】:2019-03-19 14:25:31
【问题描述】:
我有一个问题,我不知道如何处理。
我在 Gitlab 中有 2 个 Repos,RepoA 和 RepoB。在我的 gitlab 用户中,我有 3 个 ssh 密钥,一个来自我的笔记本电脑,2 个来自与 2 个存储库一起使用的 2 个 VM(VMA 和 VMB)。通过这种方式,我可以轻松地从 VM 和笔记本电脑上拉取和推入。
在 RepoA 上,我有一个也可以工作的合作者。他将 RepoA 共享到他的 Gitlab 帐户,并且他可以访问 VMA 来推送和拉取代码。他永远无法访问 RepoB,所以我的问题就从这里来了。如果他能猜到 RepoB url,他可以在他已经访问的 VMA 上拉取并查看它,因为 Gitlab 没有为每个项目添加 ssh 密钥的精细方法。我可能在这里遗漏了一些非常合乎逻辑的东西,但我看不出是什么。
我怎样才能让我在 VMA 上的合作者只看到 RepoA。
这样做的一种黑客方式是在 gitlab 中生成第三个用户,该用户仅处理 VMA,并将在 Gitlab 上的此用户帐户中引入来自 VMA 的 ssh 密钥。但我敢打赌,一定有更好、更清洁的方法。
【问题讨论】:
-
考虑在虚拟机上为协作者创建一个新用户帐户,并让他拥有自己的密钥,并且只允许他访问 gitlab 上的 repoA
-
GitLab 具有项目特定 SSH 密钥的功能:它们被称为“部署密钥”,您可以将它们用于只读或读/写访问。
-
“部署密钥”是解决方案。我试过了,它有效。谢谢@罗伯特。
标签: git ssh gitlab virtual-machine