lockinggit ssh服务器

我想通过ssh设置一个git服务器,只需要一个SSH帐号。 所有项目成员都应该在authorized_keys中列出他们的ssh密钥。 locking应该限制访问只做git的东西,只有在一个专用的目录。

什么是最好的方式来创build这样的设置? 有git-shell,这显然可以做locking只做git命令,但是我找不到如何限制对单个目录的访问。 还有各种Python和Ruby包装 – 我应该信任哪些?

你可以看一下gitosis或gitolite ,gitolite在授予访问权限等方面更好,你不必担心让用户访问服务器,而不是

你的威胁模式是什么?

好人不小心破坏了git仓库或其他数据:确保你的用户只能写入他们的homedir,tmp和git仓库。 每次提交后定期备份资料库并定期执行恢复程序。

坏人窃取了某人的私钥,并希望拥有自己的系统:攻击面仅限于通过身份validation保护的sshd部分 – 无论您使用哪种 shell接口,都尽可能小。 Python / Ruby包装涉及很多代码,并且有很多错误空间。 使用git-shell或考虑在sshd_config中使用Match和ChrootDirectory指令来限制用户可以访问的文件系统的哪些部分。

坏人窃取某人的私钥并获取源代码:教导用户如何保护其私钥并build立快速撤销密钥的过程(例如,谁在凌晨4点拨打电话以撤销密钥)。

不要使用.ssh/authorized_keys ,而是使用sshd_config中的AuthorizedKeyfile关键字来指定用户没有写权限的path,例如/etc/ssh/keys/%u 。 确保用户永远无法用自己的副本覆盖.ssh / authorized_keys是非常困难的。

此外,保持用户密钥文件和sshd_config版本控制以允许审计。