在没有gitosis/gitolite的情况下通过SSH运行"安全"的git服务器?

Dav*_*ver 13 git ssh

是否可以通过ssh运行git服务器,使用authorized_keyscommand=限制只访问git存储库,而不使用gitosis/gitolite?

Mar*_*utz 12

是的,git shell为所有只有git访问权限的用户分配登录shell.

  • 啊,谢谢.为了使这个有用,我不得不使用来自http://joey.kitenet.net/blog/entry/locking_down_ssh_authorized_keys/的`command ="..."`,但至少它告诉我要寻找什么.谢谢. (3认同)

Mau*_*ord 9

编辑:不确定所有突然的负面排名; 我显然不是说使用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到机器,它不仅会终止会话,而是告诉你在终止之前你有权访问哪个存储库,如果它知道你是谁.

  • David,重点是看看gitolite正在做的事情,因为它正是你所要求的(authorized_keys和command =).将用户名传递给命令=是一个很酷的主意,因此您可以将用户与ssh-key关联起来.拿你喜欢的东西或者从中学习,然后从头开始. (4认同)