1

当我尝试推动时,gitolite 说

Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 339 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
remote: 
remote:         ***** ABORTING *****
remote:         bad username me,
To ssh://git@githost-adm/gitolite-admin
   32cfc9f..41ee58f  master -> master

githost-adm 在我的 ~/.ssh/config 中描述为

Host githost-adm
HostName real.hostname.com
User git
IdentityFile ~/.ssh/gitolite-admin

私钥加载在 ssh-agent 中,因此当我想连接到 gitolite-admin repo 时,这使 ssh 能够使用特定的身份密钥。有一个类似的 ssh 别名 githost-as-me 包含另一个用于连接到其他存储库的身份文件。

sshd 日志似乎证明了 pubkey 被接受了

Accepted publickey for git from real.hostname.ip port 38916 ssh2

所以它可能在 gitolite 内部的某个地方隐藏了错误。

4

1 回答 1

0

此错误消息来自src/lib/Gitolite/Conf/Store.pm

sub parse_users {
    my $users = shift;
    my @users = split ' ', $users;
    do { _die "bad username '$_'" unless $_ =~ $USERNAME_PATT }
      for @users;

    return @users;
}

和:

$USERNAME_PATT        =  qr(^\@?[0-9a-zA-Z][-0-9a-zA-Z._\@+]*$);

src/lib/Gitolite/Conf.pm从您推gitolite-admin送到 repo的配置文件中存储新用户时调用。

} elsif ( $line =~ /^(-|C|R|RW\+?(?:C?D?|D?C?)M?) (.* )?= (.+)/ ) {
            my $perm  = $1;
            my @refs  = parse_refs( $2 || '' );
            my @users = parse_users($3);

因此,请仔细检查您的配置文件语法(此处,如Gitolite V3 或 'g3'中所述:如果您仍在 V2 中,请查看此页面)。
其中一定有某种语法错误。

无论如何,这不是 ssh 问题

于 2012-08-09T12:54:06.400 回答