锁定了gitolite和gl-admin-push

时间:2012-02-20 10:52:35

标签: git ssh gitolite

我愚蠢地用我的笔记本硬盘格式化我的笔记本电脑硬盘驱动器,我有root访问我的服务器并且已经按照这个答案Gitolite access repair并成功地在tmp文件夹中复制了我的repo并修复了文件

我的问题是我在执行“gl-admin-push”时遇到错误是错误:

Unable to determine correct path for gitolite scripts from the authkeys file.

Perhaps you haven't installed gitolite yet?

Or perhaps this is an HTTP mode install?  If so, please set the GL_BINDIR
environment variable to the full path of the gitolite scripts, then re-try
this command.  For example (if you followed doc/http-backend.mkd precisely):

GL_BINDIR=/var/www/gitolite-home/bin /home/git/bin/gl-admin-push 

在我把自己锁起来之前,我的gitolite安装工作正常(facepalm)

Anny关于如何摆脱这种混乱的想法?

2 个答案:

答案 0 :(得分:2)

OP Purplefish32意识到如果执行gl-admin-push的用户没有正确注册其公钥,也会出现此消息。

该密钥需要使用gitolite force-command脚本设置。

command="/home/git/bin/gl-auth-command myusername",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty

这与that script does

一致
# if GL_BINDIR was not passed in, find it
[ -z "$GL_BINDIR" ] &&
    GL_BINDIR=`  perl -ne 'print($1), exit if /^command="(.+?)\/gl-(time|auth-command) /' < $HOME/.ssh/authorized_keys`
# GL_BINDIR still not known?  we have a problem...
[ -z "$GL_BINDIR" ] && {
    echo "

Unable to determine correct path for gitolite scripts from the authkeys file.

答案 1 :(得分:2)

我遇到了同样的问题。

修复是在我authorized_keys用户(使用gitolite的用户)的git文件夹中使用~/.ssh/command=".."文件提到了VonC ,加上我想手动添加的用户的ssh-pubkey。这样条目就与其他现有条目一致。

此外,我不得不删除~/ssh/old_authkeys文件,因为gitolite似乎一直在引用它,因此在此过程中删除了更新的authorized_keys文件。 (好吧,我刚搬了它,以防我再次需要它......)

由于第二部分,我觉得有资格再发一篇文章。 ;)

编辑:
每当我使用新的repo或组设置更新我的gitolite配置时,似乎authorized_keys都会移动到old_authkeys。 :|

EDIT2:
所有问题的根源是......没有登录,因为用户称为git我已经使用了gitolite,如

git@server:repo

尝试从服务器访问服务器repo时,但是,myuser 这导致混乱的配置和一次又一次恢复authorized_keys文件。
在为用户git(而不是myuser)设置ssh-keys后,以git(而不是myuser)身份登录后,我通过

git clone /local/path/on/server/to/gitolite-admin
(then I set the right permissions in the gitolite config)
gl-admin-push

并且一切都已完成......以git用户身份登录时,gl-admin-push也没有错误地工作。

之后可以正常使用git clone git@server:repo - git add . - git commit - git push git@server:repo

另一个用户权利导致大麻烦的案例。

//这种获得的知识伴随着智慧,它永远不值得花费在它上面的时间。