如何在我的git服务器上获取ssh访问的类似github的行为

时间:2011-12-11 16:15:35

标签: git ssh github

假设我们有两个独立的github用户:Foo和Bar。他们分别拥有Quux和Waldo存储库。所以Foo可以推送到Foo / Quux并且无法推送到Bar / Waldo。对面酒吧是对的。 然后Foo克隆了他的Quux存储库:

$ git clone ...
...
$ git remote -v
origin  git@github.com:Foo/Quux.git (fetch)
origin  git@github.com:Foo/Quux.git (push)

当Foo通过git用户对Foo / Quux存储库具有写入权限时,他似乎没有通过同一用户写入对Bar / Waldo存储库的访问权限。有什么办法可以在我的git服务器上达到相同的行为吗?我是否应该为此目的编写自定义sshd守护进程?

3 个答案:

答案 0 :(得分:7)

您可以使用Gitolite通过SSH对您的git存储库进行细粒度访问控制,其中每个用户都通过SSH密钥进行识别。

与已经提到过的gitosis相比,Gitolite仍然得到维护,并支持对存储库访问进行更细粒度的控制。

如果你想在内部获得更多GitHub的功能,你应该看看GitLab,当然还有GitHub Enterprise

答案 1 :(得分:1)

您可以使用gitosis对团队中共享的多个存储库进行细粒度访问控制。

答案 2 :(得分:0)

如果存储库位于同一服务器上,则无法区分具有相同用户名的两个用户。即使是自定义sshd也不会起作用,因为它只会看到用户“git”的传入连接,而不是原始用户名。

我们使用用户名或组管理我们的权限。因此,一些用户属于可以推送到某些存储库的“开发人员”组,而其他用户属于可以推送到其他存储库的“用户”。每个用户使用他/她自己的用户名登录。