Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在我的git服务器上获得类似github的ssh访问行为_Git_Ssh_Github - Fatal编程技术网

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

如何在我的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/

假设我们有两个独立的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/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是社区接受的替代方案。