Answers:
您可能考虑在单个用户下使用gitolite,而不是设置多个git-shell用户(以及所需的组和组权限,以便他们可以共享对存储库的访问权限)。
gitolite一个单一的,普通用户下运行在服务器上,使用SSH公钥来区分访问Git仓库(见“ 如何gitolite使用SSH ”对于一些怎样的细节gitolite做它基于SSH的标识)。 gitolite提供了每个存储库,每个分支甚至是每个路径访问控制。
您基本上有两个选择。
如topdog所述,当您在服务器上创建用户时,请将其shell设置为git-shell(在此处输入书本)。这将允许用户通过SSH登录,但是它将运行git-shell,而不是运行正常的全功能shell(例如sh,bash等),它仅提供对git功能的访问。
或者,您可以通过其他协议使存储库可用,例如TCP(使用git-deamon)或HTTP / HTTPS。不过,我只建议将这种情况用于只读访问。
您提到要为用户支持“推送”功能,因此您确实应该选择选项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$