以有限的权限创建SSH用户以仅使用Git存储库


12

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

git clone ssh://myUser@mydomain.com/path/to/git

现在,我需要添加更多用户才能访问该存储库,但不确定如何操作。

我在ssh中添加了一个testUser,但似乎无法将用户权限限制为仅使用git。

testUser可以SSH和浏览整个服务器。

如何创建只能远程访问git的用户,以进行克隆/拉动/推送等操作...

谢谢

Answers:


12

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

gitolite一个单一的,普通用户下运行在服务器上,使用SSH公钥来区分访问Git仓库(见“ 如何gitolite使用SSH ”对于一些怎样的细节gitolite做它基于SSH的标识)。 gitolite提供了每个存储库,每个分支甚至是每个路径访问控制。


1
+1为gitosis ...正是为此设置而制作的。
Jeremy Bouse

12

您基本上有两个选择。

  1. 如topdog所述,当您在服务器上创建用户时,请将其shell设置为git-shell在此处输入书本)。这将允许用户通过SSH登录,但是它将运行git-shell,而不是运行正常的全功能shell(例如sh,bash等),它仅提供对git功能的访问。

  2. 或者,您可以通过其他协议使存储库可用,例如TCP(使用git-deamon)或HTTP / HTTPS。不过,我只建议将这种情况用于只读访问。

您提到要为用户支持“推送”功能,因此您确实应该选择选项1。


5

您需要将其shell更改为git-shell,这只会使他们只能访问git函数。


谢谢topdog。基本上,用户将在Mac上使用自己的git shell。我真的不希望他能够ssh到服务器。因此,如果git仓库位于testUser计算机/ Mac上的mydomain.com上,则在终端中,他只需提示输入git clone ssh://myUser@mydomain.com/path/to/git即可输入密码,然后下载该仓库。我刚才尝试将他的shell设置为git-shell。调用克隆时提示,但密码被拒绝。
巴赫(Bach)

如果您希望他们在服务器上执行的所有操作都是运行git命令并且无法进行shell操作,则需要将myUsers shell设置为git-shell。对于密码提示,请使用密钥。有关服务器上git的更多详细信息,请参见
topdog 2010年

感谢您的参考书!很有帮助。最终使用了gitolite,尽管设置仍然存在问题。
巴赫(Bach)

git-shell:“这是SSH帐户的登录Shell,用于提供受限制的Git访问。它仅允许执行实现拉/推功能的服务器端Git命令以及位于git-shell-commands子目录中的自定义命令用户的主目录。” 在Linux上,将“ / bin / git-shell”添加到“ / etc / shells”,然后添加“ usermod --shell / bin / git-shell $ USER”。顺便说一句,git书现在位于git-scm.com/book/en/ch4-0.html
David Tonhofer 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.