Gitolite 使用 ssh 强制命令进行身份验证。每个有权访问 gitolite 存储库的用户都会在安装 gitolite 时登录。这些钩子在 keydir 中获取新密钥,并将它们添加到配置为使用强制命令的授权密钥文件中。
用户被迫使用带有参数的 gitolite shell,该参数是用户名。相关钩子的以下部分获取文件路径并将其分配给用户,然后删除/
名称中带有 a 的所有目录和文件。剩下的将成为用户名,只要它以结尾,并且只要至少有一个附加字符.pub
,它就会忽略后缀前面的单个@
符号。.pub
my $user = $f;
$user =~ s(.*/)(); # foo/bar/baz.pub -> baz.pub
$user =~ s/(\@[^.]+)?\.pub$//; # baz.pub, baz@home.pub -> baz
这提供了如下功能:
keydir
|--host1
|--dave.pub
|--david.pub
|--host2
|--dave.pub
目录是任意的,但出于组织目的,主机用于提供结构。你最终有两个dave
用户和一个david
用户。
我使用更像这样的配置:
keydir
|--steve
|--steve@example.com@laptop.pub
|--steve@example.com@desktop.pub
|--services
|--jenkins
|--jenkins@master-buildhost.pub
|--jenkins@slave-buildhost.pub
|--redmine
|--redmine@dev-server.pub
|--jira
|--jira@dev-alias.pub
同样,目录结构无关紧要。这给了我用户steve@example.com
、、、jenkins
和redmine
。jira
用户和steve@example.com
用户一样有两个密钥jenkins
。如果我有多个用户,我可能会有一个包含 steve key 目录的 users 子目录。