所以我得到了吉托莱特设置。很简单。但我有一个问题。SSH URL 遵循 的格式git@host:repo
。我习惯于Bitbucket/Github其中 URL 遵循 格式git@host:user/repo
。有没有办法使用吉托莱特?
另一个问题。我的~/.ssh/config
文件设置了以下条目:
Host <host>
User <user>
IdentityFile <path/to/public/key>
我没有任何指定git
用户的配置,但我能够git@host:repo
毫无问题地克隆。显然,我的 ssh 客户端正在使用我的公钥访问服务器,这就是为什么吉托莱特让我克隆 repo,但是我的 ssh 客户端如何知道使用仅为用户配置<user>
而不是git
用户本身配置的公钥?
答案1
限制用户使用特定命令对于 gitolite 来说非常重要。
如果你读到man sshd
并查找 authorized_keys 文件格式,您将看到许多可以添加到公钥行的选项,这些选项以各种方式限制传入用户。特别要注意选项command=
,它的意思是“无论传入用户要求做什么,都强制运行此命令”。还要注意,当authorized_keys文件中有许多公钥(即多行)时,每行可以有一组不同的选项和
command=
值。如果没有这个
command=
选项,ssh 守护进程将简单地给你一个 shell,这不是我们想要的 gitolite 密钥(尽管我们可能有其他可以用来获取 shell 的密钥)。这是 gitolite 工作的基础;请确保你理解这一点。
这些command=
使用你的公钥名称作为用户名。
因此,所有 ssh 查询都可以通过以下方式完成:
- 用户 git
- 一个公钥,其名称在 中的 command= 指令的参数中注册
~git/.ssh/authorized_keys
。
至于user/repos
,与 Gitolite 最接近的是野生回购和回购模式。
repo CREATOR/a[0-9][0-9]