是否可以通过ssh运行git服务器,使用authorized_keys和command=限制只访问git存储库,而不使用gitosis/gitolite?
编辑:不确定所有突然的负面排名; 我显然不是说使用Gitolite,因为OP特别要求不使用它.我只是说他所要求的是Gitolite的微小源代码所做的95%,因此我告诉他在哪里可以找到他想要复制的代码片段来推销自己的代码片段.
是的,gitolite正是这样做的.它也不会换出用户的shell.
cat ~/.ssh/authorized_keys
command="/home/git/.gitolite/src/gl-auth-command jbruce",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAD3NzaC1yc2EABBBCIwAAAQEAtRFmADxUSCX97CS/Uh7/N0y0vL...
Run Code Online (Sandbox Code Playgroud)
请注意,这authorized_keys在服务器上看起来不正常,它还将用户名作为参数传递,以便执行的脚本知道此ssh密钥属于谁.不切换用户shell(同时仍然保持安全)的额外好处是,如果你尝试直接ssh到机器,它不仅会终止会话,而是告诉你在终止之前你有权访问哪个存储库,如果它知道你是谁.