Martin v. Löwis Asked: 2010-01-24 14:18:01 +0800 CST2010-01-24 14:18:01 +0800 CST 2010-01-24 14:18:01 +0800 CST 锁定 git ssh 服务器 772 我想通过 ssh 设置一个 git 服务器,并为该项目使用一个 SSH 帐户。所有项目成员的 ssh 密钥都应列在 authorized_keys 中。Lockdown 应该限制只做 git 的东西,并且只能在一个专用目录内。 创建此类设置的最佳方法是什么?有 git-shell,它显然可以锁定只执行 git 命令,但我不知道如何限制对单个目录的访问。还有各种 Python 和 Ruby 包装器——我应该信任其中的哪一个? ssh git 2 个回答 Voted seanl 2010-01-24T15:26:59+08:002010-01-24T15:26:59+08:00 你可以看看gitosis或gitolite,gitolite 在授予对存储库的访问等方面更好,你不必担心让用户访问服务器等等 Alex Holst 2010-01-24T15:10:36+08:002010-01-24T15:10:36+08:00 你的威胁模型是什么? 好人不小心破坏了 git 存储库或其他数据:确保您的用户只能写入他们的 homedir、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 版本受控以允许审计。
你可以看看gitosis或gitolite,gitolite 在授予对存储库的访问等方面更好,你不必担心让用户访问服务器等等
你的威胁模型是什么?
好人不小心破坏了 git 存储库或其他数据:确保您的用户只能写入他们的 homedir、tmp 和 git 存储库。每次提交后备份存储库并定期练习恢复过程。
坏人窃取了某人的私钥并想拥有您的系统:您的攻击面仅限于受身份验证保护的 sshd 部分 - 以及您使用的任何 shell 接口,因此使其尽可能小。Python/Ruby 包装器涉及大量代码,并且存在大量错误空间。使用 git-shell 或考虑使用 sshd_config 中的 Match 和 ChrootDirectory 指令来限制用户可以访问文件系统的哪些部分。
坏人窃取某人的私钥并获取您的源代码:教用户如何保护他们的私钥并建立快速撤销密钥的程序(例如,在凌晨 4 点呼叫谁来撤销密钥)。
不要使用
.ssh/authorized_keys
,而是使用AuthorizedKeyfile
sshd_config 中的关键字来指定用户没有写入权限的路径,例如/etc/ssh/keys/%u
. 很难确保用户永远无法用自己的副本覆盖 .ssh/authorized_keys。此外,保持用户密钥文件和 sshd_config 版本受控以允许审计。