Gitlab/Gitolite issue while cloning repo

2019-02-07 09:13发布

问题:

I have setup a Gitlab strictly according to manual from the gitlab wiki. It works. I have a web access, I can create a project too (and git repo has been created after it). All is ok.

But when I try clone the newly created project repo with

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

from the my development machine the server says that I need to enter password for the git user (this user have no password). I think it should auth me with key I provided.

My environment: I've successfully created the ssh keys on my dev machine, set the HOME environment variable to C:\Users\. Ssh is correctly authorize user with keys to other servers (and to this server too). Also I've added the generated keys for my git user.

Next command is also working fine from the local server user (this is according to manual too):

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

My authorized_keys file for the git user is like:

# 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

Should there be my user key in the authorized_keys file after I've added ssh key from gitlab web console? Guys, what I'm doing wrong?

回答1:

That means that:

  • ether your public/private ssh keys aren't found locally (in your ~/.ssh directory)
  • or the public key hasn't been registered in the server ~/.ssh/authorized_keys by gitlab (which seems to be the case here: addig your ssh key should trigger its publication by gitlab).
    This is similar to GitLab issue 900.
    You could have copy-paste your key with linebreaks in it.

Remove linebreaks from key before persisting.

You will know more with a:

ssh -vvv git@git.myserver.com

Note that all operations on the server are done as user 'git', which is why it falls back asking the git password. This is how gitolite works with ssh.


As the OP mentions, the issue was about gitolite not being properly installed.
This is the kind of issue which should be detected by the "verification step" of GitLab:

sudo -u gitlab bundle exec rake gitlab:app:status RAILS_ENV=production

It should produce, regarding gitolite (I have added the 'vvv' and '^^^' for emphasis):

# 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

If it does not, then a re-installation of Gitolite is in order.



回答2:

Okay, I think I've got it.

When I add key for the user from web interface, it hasn't been added to authorized_keys file. What I do is make full delete of the gitolite installation and then reinstall it according to native manual from the gitolite wiki. Now when i've add a key to user, this key is added to authorized_keys and all works fine now.