4

我会尽力解释我的情况:

我在 debian 挤压服务器中使用 gitolite,并且有 3 个用户可以访问和使用存储库:

  • alex@workbox
  • alex@homebox
  • katy@workbox

以上是三个 Ubuntu 机器对应的用户名和主机名(Alex 在两个位置工作)。

我做的第一件事是添加alex@workbox到 gitolite:

  1. Alex 使用 ssh-keygen 生成了他的 ssh 密钥
  2. 我将他的 ssh 密钥复制为 alex@workbox.pub 在我本地 gitolite-admin 克隆仓库的“keydir”文件夹中
  3. 修改了我本地 gitolite-admin 克隆存储库的 conf/gitolite.conf 文件,以便让 alex@workbox RW 访问存储库:
    repo project1
    RW+ = alex@workbox
  4. 照常做:
    • git add .
    • git commit -m "Added alex@workbox"
    • git push

当 Alex 尝试克隆 project1 存储库时,出现一个错误,提示用户 " alex" 的访问被拒绝。
所以,我登录到服务器并打开/var/lib/gitolite/.ssh/authorized_keys.
文件的第一部分是这样的:

command="/usr/share/gitolite/gl-auth-command alex",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa...

所以我手动替换alexalex@workbox,保存了文件,这次 Alex 能够克隆存储库并毫无问题地使用它。

然后我按照上述步骤添加 Katy,在推送到之后gitolite-admin,我再次打开authorized_keys文件,看到 gitolite 将“ user@hostname”替换为“ user”。
所以它有alex而不是alex@workbox和相同的katy
然后我不得不再次手动替换它并保存文件。我看到,对于我为gitolite-adminrepo gitolite 所做的每次推送,都会将其中的每个“ user@hostname”替换为“ user”,.ssh/authorized_keys这样会使用户无法访问存储库。

我该怎么做才能让 gitolite 保持“ user@hostname”?
是否需要在服务器上进行配置或在我的本地克隆存储库上进行配置更改gitolite-admin

4

2 回答 2

2

配置语法提到:

用户名和仓库名尽量简单;它们必须以字母数字开头,但之后还可以包含._-.

用户名可以选择后跟 an@和 adomainname至少包含一个.(这允许您使用电子邮件地址作为某人的用户名)。

您的命名约定不遵循具有“ @”的正确语法。

您可以在src/triggers/post-compile/ssh-authkeys

sub optionise {
    my $f = shift;

    my $user = $f;
    $user =~ s(.*/)(); # foo/bar/baz.pub -> baz.pub
    $user =~ s/(\@[^.]+)?\.pub$//; # baz.pub, baz@home.pub -> baz

    my @line = slurp($f);
    if ( @line != 1 ) {
        _warn "$f does not contain exactly 1 line; ignoring";
        return '';
    }
    chomp(@line);
    return "command=\"$glshell $user" . ( $kfn ? " $f" : "" ) . "\",$auth_options $line[0]";
}
于 2012-12-19T18:15:09.883 回答
2
于 2012-12-20T04:31:33.557 回答