我有一个Git update
挂钩,检查正在更新的分支是否为主,如果是,则向客户端发送错误消息。我现在想要这样做只有push
es to master我自己做的将会通过。
目前,我已将两个SSH密钥添加到用户authorized_keys
的{{1}}。其中一个是我的,我打算添加其他人。我看了here:
如果您允许每个人通过公钥身份验证与单个用户(如“git”)连接,则可能必须为该用户提供一个shell包装器,以确定哪个用户基于公钥进行连接,以及相应地设置一个环境变量。
但他们没有解释如何做到这一点,我找不到任何关于如何做这件事的例子。你如何确定SSH机器的指纹?我还考虑过创建一个单独的" git-admin"用户帐户,但裸存储库位于/ home / git目录中,我无法考虑如何让两个用户使用相同的网址推送到同一个存储库。我不能让用户共享同一个主目录,因为git
将同时适用于两者,我也无法为这一个设置环境变量而不是另一个。
我的服务器在FreeBSD上运行。
关于如何实现我想要做的事情的任何想法?
答案 0 :(得分:1)
这称为ssh forced command, and is used for instance by gitolite
你可以:
在服务器端安装gitolite,它利用了本机ssh功能,并且可以限制对某些分支的写入(推送)访问。
它是 authorization layer 和you can test for access for specific branches。
if gitolite access -q reponame username W master
then
...
或修改您的~/.ssh/authorized_keys
以添加强制命令,这是一个在任何 ssh调用上调用的脚本,然后可以测试该调用中涉及哪个键,识别你让命令通过。
这就是" ssh强制命令"代表(并且它与Git无关)