authorized_keys 文件中的 Gitolite 用户名

标签 git gitolite authorized-keys

我会尽我所能解释我的场景:

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

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

以上是三个Ubuntu盒子对应的用户名和主机名(Alex在两个地方工作)。

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

  1. Alex 使用 ssh-keygen 生成了他的 ssh key
  2. 我将他的 ssh key 复制为 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...

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

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

如何让 gitolite 保留“user@hostname”?
是否需要在服务器上进行配置或在本地克隆的 gitolite-admin 存储库上进行配置更改?

最佳答案

configuration syntax 提到:

User names and repo names are as simple as possible; they must start with an alphanumeric, but after that they can also contain ., _, or -.

Usernames can optionally be followed by an @ and a domainname containing at least one . (this allows you to use an email address as someone's username).

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

您可以在 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]";
}

关于authorized_keys 文件中的 Gitolite 用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957954/

相关文章:

linux - ssh-copy-id 不会复制到 sshd_config 中指定的自定义 'AuthorizedKeysFile'

amazon-web-services - Amazon AWS EC2 已删除 key 锁定在根目录之外

git - JetBrains : Show local changes made in this branch

git - 从 Git 历史记录中删除敏感文件及其提交

git - 请帮助我了解 gitolite 用户

gitolite用户无法连接

Gitolite 3 - 设置 repo 描述(未授权)

git - 如何从 Jenkins 中的构建中排除 git 分支

git - 我改变了我的分支系统。怎么在github上整理呢?

docker - 透明的 ssh 连接转发到 docker 容器