我已经安装了 gitolite。我能够很好地管理它。我添加了一些新的存储库和一些 pub 密钥。安装为“ git@domain.com
”,并为用户添加了一个存储库为repo.git
.
是否必须git@domain.com:repo.git
访问,或者有没有办法在 url 中指示用户?
可能类似user@domain.com:repo.git
或git.domain.com/user/repo.git
例如?
我已经安装了 gitolite。我能够很好地管理它。我添加了一些新的存储库和一些 pub 密钥。安装为“ git@domain.com
”,并为用户添加了一个存储库为repo.git
.
是否必须git@domain.com:repo.git
访问,或者有没有办法在 url 中指示用户?
可能类似user@domain.com:repo.git
或git.domain.com/user/repo.git
例如?
不,它必须是git@domain.com
因为用户总是相同的:你用来在你的服务器上安装和管理 gitolite 的 git 帐户。
实际用户是根据您在进行 ssh 调用时使用的公钥推导出来的。如果您在 user.pub 文件中注册了该密钥,该文件表示以用户登录名命名的
所述公钥,那么 gitolite 将能够识别您。
有关更多信息,请参阅“ gitolite 如何使用 ssh ”。
如果你查看
authorized_keys
文件,你会看到这样的条目(我当然切掉了末端;它们很长):
command="[path]/gitolite-shell sitaram",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA18S2t...
command="[path]/gitolite-shell usertwo",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArXtCT...
首先,它找出该文件中的哪些公钥与传入的登录名匹配。
一旦找到匹配项,它将运行该行给出的命令;例如,如果我登录,它将运行[path]/gitolite-shell sitaram
.
所以首先要注意的是,这样的用户没有得到“shell访问”,这很好!当
gitolite-shell
获得控制权时,它会查看第一个参数(“sitaram
”、“usertwo
”等)来确定您是谁。然后它会查看SSH_ORIGINAL_COMMAND
变量以找出您要访问的存储库,以及您是在阅读还是在写作。现在它有一个用户、存储库和请求的访问权限(读/写),gitolite 查看它的配置文件,并允许或拒绝请求。