如何在我的git服务器上获得类似github的ssh访问行为
假设我们有两个独立的github用户:Foo和Bar。他们分别拥有Quux和Waldo存储库。所以Foo可以推到Foo/qux,而不能推到Bar/Waldo。对面是酒吧的右边。 然后Foo克隆了他的Quux存储库:如何在我的git服务器上获得类似github的ssh访问行为,git,ssh,github,Git,Ssh,Github,假设我们有两个独立的github用户:Foo和Bar。他们分别拥有Quux和Waldo存储库。所以Foo可以推到Foo/qux,而不能推到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/
$ 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
守护进程?如果存储库位于同一台服务器上,则无法区分具有相同用户名的两个用户。即使是自定义sshd也无法工作,因为它只能看到用户“git”的传入连接,而不能看到原始用户名
我们使用用户名或组管理权限。因此,一些用户属于可以推送到特定存储库的“开发人员”组,而另一些用户属于可以推送到其他存储库的“用户”。每个用户都使用自己的用户名登录 您可以通过SSH对团队中共享的多个存储库进行细粒度访问控制。您可以通过SSH获得对git存储库的细粒度访问控制,其中每个用户都由其SSH密钥标识
与前面提到的gitosis不同,Gitolite仍然得到维护,并支持对存储库访问进行更细粒度的控制
如果您想在内部更多地使用GitHub的功能,您应该看看,当然。“如果存储库位于同一台服务器上,则无法区分具有相同用户名的两个用户。”-您仍然可以使用不同的SSH密钥来区分用户,如GitHub、gitosis、,依赖ssh密钥并不总是可行的(比如当你没有自己的密钥时)。Sourceforge.net也使用用户名,事实上,它甚至使用了一种特殊的符号(“用户,project@git.sf.net)来启用角色。使用用户名有一个严重的问题:它会使每个用户的存储库URL不同。例如,在使用子模块时,这是一个障碍,我敢打赌这是GitHub和其他人使用ssh密钥的主要原因。gitosis已经多年没有更新了-gitolite是社区接受的替代方案。