克隆存储库时出现Gitlab/Gitolite问题

4
我已经按照Gitlab Wiki上的手册严格设置了Gitlab。它可以正常工作,我可以通过Web访问并创建项目(在此之后也创建了Git存储库)。一切都很好。

但是,当我尝试使用以下命令克隆新创建的项目存储库时:

git clone git@git.myserver.com:myproject.git

从我的开发机器上,服务器要求我为 git 用户输入密码(此用户没有密码)。我认为它应该使用我提供的密钥进行身份验证。

我的环境:我已经成功地在我的开发机器上创建了ssh密钥,并将HOME环境变量设置为C:\Users\。Ssh正确地使用密钥授权用户访问其他服务器(包括这台服务器)。 此外,我还添加了生成的密钥用于我的git用户。

下一个命令在本地服务器用户上也可以正常工作(这也是根据手册的要求):

sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin

我为git用户设置的authorized_keys文件如下:

# gitolite start
command="/home/git/bin/gl-auth-command gitlab",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa <LONG_KEY_HERE> gitlab@odiszapc
# gitolite end

我在gitlab web控制台添加ssh key之后,authorized_keys文件中是否应该出现我的用户密钥?大家好,我做错了什么?

2个回答

3

这意味着:

  • 要么您的公共/私有ssh密钥在本地找不到(在您的~/.ssh目录中)
  • 要么公钥尚未由gitlab注册到服务器~/.ssh/authorized_keys中(这似乎是这种情况:添加您的ssh密钥应该触发其由gitlab发布)。
    这类似于GitLab问题900
    您可以将带有换行符的密钥复制粘贴。

在持久化之前删除密钥中的换行符

您可以通过以下方法了解更多信息:

ssh -vvv git@git.myserver.com

请注意,服务器上的所有操作都是以用户“git”执行的,这就是为什么会回退并询问“git”密码的原因。这就是gitolite与ssh交互的方式
正如OP所提到的,问题在于没有正确安装gitolite。
这种问题应该由GitLab的“验证步骤”检测出来。
sudo -u gitlab bundle exec rake gitlab:app:status RAILS_ENV=production

关于 gitolite,它应该会产生以下结果(我已添加 'vvv' 和 '^^^' 以凸显):

# OUTPUT EXAMPLE
Starting diagnostic
config/database.yml............exists
config/gitlab.yml............exists
/home/git/repositories/............exists
/home/git/repositories/ is writable?............YES

vvvvvvvvvvvvvvvvvvv

remote: Counting objects: 603, done.
remote: Compressing objects: 100% (466/466), done.
remote: Total 603 (delta 174), reused 0 (delta 0)
Receiving objects: 100% (603/603), 53.29 KiB, done.
Resolving deltas: 100% (174/174), done.
Can clone gitolite-admin?............YES

^^^^^^^^^^^^^^^^^^

UMASK for .gitolite.rc is 0007? ............YES

如果不行的话,那么需要重新安装 Gitolite。

0

好的,我想我明白了。

当我从Web界面为用户添加密钥时,它并没有被添加到authorized_keys文件中。我的做法是完全删除gitolite安装,然后按照gitolite wiki的本地手册重新安装它。现在,当我为用户添加密钥时,这个密钥会被添加到authorized_keys中,一切都正常工作了。


我已经编辑了我的答案,强调了能更早地检测出这个问题的步骤。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接