创build具有有限权限的SSH用户只能使用Git存储库

我在SunOS服务器上托pipe了一个git存储库,可以通过ssh远程使用

git clone ssh://[email protected]/path/to/git 

现在我需要添加更多的用户才能访问该存储库,但不知道如何。

我已经添加了一个testing用户SSH,但我似乎无法限制该用户的权限只使用GIT。

testUser能够通过SSH浏览整个服务器。

我如何创build只能远程访问git,克隆/拉/推等的用户…

谢谢

您可以考虑在单个用户下使用gitolite ,而不是设置多个git-shell用户(以及所需的组和组权限,以便他们可以共享对存储库的访问)。

gitolite在服务器上的一个普通用户下运行,并使用SSH公钥来区分对Git存储库的访问(有关gitolite如何执行其基于SSH的标识的一些细节,请参阅“ gitolite如何使用ssh ”)。 gitolite提供每个存储库,每个分支,甚至一些每path访问控制。

你基本上有两个select。

  1. 正如topdog提到的,当你在服务器上创build用户时,将他们的shell设置为git-shell ( 在这里预订条目 )。 这将允许用户通过SSHlogin,而不是运行一个正常的,function齐全的shell(例如sh,bash等),它将运行git-shell,它只提供对gitfunction的访问。

  2. 或者,您可以通过其他协议(例如TCP(使用git-deamon )或HTTP / HTTPS)使您的存储库可用。 虽然我只推荐这样的场景进行只读访问。

你提到想要支持你的用户的'推'function,所以你应该真的去select#1。

你需要把他们的shell改成git-shell,这只会让他们只能访问git函数。

另一种方法是通过限制ssh内用户的访问。

http://prefetch.net/blog/index.php/2006/09/05/limiting-access-to-openssh-directives/

这个例子只是使用一个用户,但是如果用户在同一个组里,你可以通过使用group指令来过滤它们。 就像是

 AllowTcpForwarding yes X11Forwarding yes Match Group Users AllowTcpForwarding no X11Forwarding no $Here is a directive for git$