锁定 git ssh 服务器

锁定 git ssh 服务器

我想通过 ssh 设置一个 git 服务器,为项目设置一个 SSH 帐户。所有项目成员的 ssh 密钥都应列在 authorized_keys 中。锁定应限制访问权限,仅允许执行 git 操作,并且只能在专用目录中执行。

创建此类设置的最佳方法是什么?有 git-shell,它显然可以锁定仅执行 git 命令,但我不知道如何限制对单个目录的访问。还有各种 Python 和 Ruby 包装器 - 我应该信任其中哪一个?

答案1

你可以看看吉托西斯或者吉托莱特gitolite 在授予存储库访问权限等方面表现更好,你不必担心授予用户访问服务器的权限等

答案2

你的威胁模型是什么?

好人意外破坏了 git 存储库或其他数据:确保您的用户只能写入其主目录、tmp 和 git 存储库。每次提交后备份存储库并定期练习恢复程序。

坏人窃取了某人的私钥并想要拥有你的系统:您的攻击面仅限于受身份验证保护的 sshd 部分 - 以及您使用的任何 shell 接口,因此请尽可能缩小攻击面。Python/Ruby 包装器涉及大量代码,并且存在大量出错空间。使用 git-shell 或考虑使用 sshd_config 中的 Match 和 ChrootDirectory 指令来限制用户可以访问文件系统的哪些部分。

坏人窃取某人的私钥并获取你的源代码:教导用户如何保护他们的私钥并建立快速撤销密钥的程序(例如,凌晨 4 点打电话给谁来撤销密钥)。

不要使用.ssh/authorized_keys,而是使用AuthorizedKeyfilesshd_config 中的关键字来指定用户没有写权限的路径,例如/etc/ssh/keys/%u。很难确保用户永远不会用自己的副本覆盖 .ssh/authorized_keys。

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

相关内容