2012-08-09 81 views
1

当我试图推动,gitolite说,在我的〜/ .ssh/config中为不能推入gitolite管理员回购

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

专用密钥加载描述

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://[email protected]/gitolite-admin 
    32cfc9f..41ee58f master -> master 

githost-ADM ssh-agent,所以当我想连接到gitolite-admin repo时,这使得ssh可以使用特定的身份密钥。有类似的ssh别名githost-as-me包含另一个用于连接到其他repos的身份文件。

sshd的日志似乎证明PUBKEY被接受

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

因此它可能是某处gitolite在错误皮内。

+0

是你的用户名'我'? – victorsavu3 2012-08-09 11:54:07

+0

这是OS用户名,它同时拥有gitolite-admin和其他repos的密钥。 Gitolite用户创建用于访问gitolite-admin repo,名为'gitolite-adm','我'用户无权访问它,并仅在其他repos访问列表中提及。 – tijagi 2012-08-09 12:25:18

回答

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._\@+]*$); 

存储从您的配置文件,你是在gitolite-admin回购推新用户时src/lib/Gitolite/Conf.pm调用。

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

所以仔细检查你的配置文件的语法(在这里,因为documented for Gitolite V3, or 'g3':如果你仍然在V2,检查this page)。
它必须有某种语法错误。

无论如何,这不是一个ssh问题