Gitolite: не авторизуется пользователь

IDE, VCS и прочее

Модератор: Модераторы разделов

Ответить
IMB
Сообщения: 2559
ОС: Debian

Gitolite: не авторизуется пользователь

Сообщение IMB »

Доброго дня!
На сервере установил и настроил gitolite. Используя ключ администратора клонировал gitolite-admin.git и добавил ключ нового пользователя, отправил изменения на сервер.

Код: Выделить всё

$ ssh gitolite@gitolite info
hello gitolite, this is gitolite@develop running gitolite3 v3.03-0-g75387fd on git 1.7.10

 R W    gitolite-admin
 R W    testing

Так как все действия производятся с одной машины, то в .ssh/config внёс следующее:

Код: Выделить всё

Host gitolite
    IdentityFile ~/.ssh/id_rsa.gitolite
    User gitolite
    Hostname 192.168.10.244

Host test
    IdentityFile ~/.ssh/test_git
    User test_git
    Hostname 192.168.10.244

Пробую новым пользователем клонировать репозиторий testing:

Код: Выделить всё

$ git clone test_git@test:testing.git
Cloning into 'testing'...
test_git@192.168.10.244's password:


В логах сервера:

Код: Выделить всё

May 25 10:15:25 develop sshd[1717]: Accepted publickey for gitolite from 192.168.10.42 port 52195 ssh2
May 25 10:15:25 develop sshd[1717]: pam_unix(sshd:session): session opened for user gitolite by (uid=0)
May 25 10:15:25 develop sshd[1720]: Received disconnect from 192.168.10.42: 11: disconnected by user
May 25 10:15:25 develop sshd[1717]: pam_unix(sshd:session): session closed for user gitolite
May 25 10:18:31 develop sshd[1733]: Invalid user test_git from 192.168.10.42
May 25 10:18:31 develop sshd[1733]: Failed none for invalid user test_git from 192.168.10.42 port 52196 ssh2

Судя по описанию, все действия должны происходить от имени пользователя gitolite, но почему-то этого не происходит?
/etc/ssh/sshd_config

Код: Выделить всё

Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication yes
X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
AllowUsers gitolite

Можете подсказать в чём ошибка?
Спасибо!
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: Gitolite: не авторизуется пользователь

Сообщение IMB »

Чтение http://sitaramc.github.com/gitolite/sts.html#sshkeys-lint дало следующее:

Код: Выделить всё

./gitolite sshkeys-lint
sshkeys-lint: ==== checking authkeys file:
sshkeys-lint: ==== checking pubkeys:
sshkeys-lint: gitolite.pub maps to user gitolite
sshkeys-lint: test_git.pub maps to user test_git

Проверка того, какой ssh-key используется:

Код: Выделить всё

ssh -vvv test_git@test pwd 2> >(grep -i offer)
debug1: Offering public key: /home/kirill/.ssh/test_git
test_git@192.168.10.244's password:
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: Gitolite: не авторизуется пользователь

Сообщение IMB »

Похоже проблема решена - для авторизации надо всегда использовать пользователя от имени которого работает репозиторий, различие пользователей на серверной стороне происходит по их ключам.
Найдено здесь http://stackoverflow.com/questions/9630937...r-with-gitolite
Таким образом в моём случае для работы надо использовать git clone gitolite@test:test.git для простого пользователя и git clone gitolite@gitolite:test.git для привилигерованного.
На стороне сервера различия можно отследить в логе:

Код:

2012-05-25.11:24:53 2041 ssh ARGV=gitolite SOC=git-receive-pack 'test.git' FROM=192.168.10.42 2012-05-25.11:24:53 2041 access(test, gitolite, W, 'any'),-> refs/.* 2012-05-25.11:24:53 2041 trigger,Writable,access_1,ACCESS_1,test,gitolite,W,any,refs/.* 2012-05-25.11:24:53 2041 pre_git test gitolite W any -> refs/.* 2012-05-25.11:24:53 2041 system,git,shell,-c,git-receive-pack '/data/git/repositories/test.git' 2012-05-25.11:24:53 2041 update,test,gitolite,W,refs/heads/master,8646ddbd0d29ef0cc7351dadb19e1e0a6ae8ffa2,630510d8d5421e236a38b873f1d6e40c 5cac899d 2012-05-25.11:24:53 2041 -> refs/.* 2012-05-25.11:24:53 2041 update test gitolite W refs/heads/master 8646ddbd0d29ef0cc7351dadb19e1e0a6ae8ffa2 630510d8d5421e236a38b873f1d6e40c5cac899d 2012-05-25.11:24:53 2041 END 2012-05-25.11:26:31 2055 ssh ARGV=test_git SOC=git-upload-pack 'test.git' FROM=192.168.10.42 2012-05-25.11:26:31 2055 access(test, test_git, R, 'any'),-> refs/.* 2012-05-25.11:26:31 2055 trigger,Writable,access_1,ACCESS_1,test,test_git,R,any,refs/.* 2012-05-25.11:26:31 2055 pre_git test test_git R any -> refs/.* 2012-05-25.11:26:31 2055 system,git,shell,-c,git-upload-pack '/data/git/repositories/test.git' 2012-05-25.11:26:31 2055 END 2012-05-25.11:27:46 2065 ssh ARGV=test_git SOC=git-receive-pack 'test.git' FROM=192.168.10.42 2012-05-25.11:27:46 2065 access(test, test_git, W, 'any'),-> refs/.* 2012-05-25.11:27:46 2065 trigger,Writable,access_1,ACCESS_1,test,test_git,W,any,refs/.* 2012-05-25.11:27:46 2065 pre_git test test_git W any -> refs/.* 2012-05-25.11:27:46 2065 system,git,shell,-c,git-receive-pack '/data/git/repositories/test.git' 2012-05-25.11:27:46 2065 update,test,test_git,W,refs/heads/master,630510d8d5421e236a38b873f1d6e40c5cac899d,5cd3b0df08bd7b1278441b04074b8e3a d7524262 2012-05-25.11:27:46 2065 -> refs/.* 2012-05-25.11:27:46 2065 update test test_git W refs/heads/master 630510d8d5421e236a38b873f1d6e40c5cac899d 5cd3b0df08bd7b1278441b04074b8e3ad7524262 2012-05-25.11:27:46 2065 END
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Gitolite: не авторизуется пользователь

Сообщение sash-kan »

IMB писал(а):
25.05.2012 10:26
Пробую новым пользователем клонировать репозиторий testing:

Код: Выделить всё

$ git clone test_git@test:testing.git
Cloning into 'testing'...
test_git@192.168.10.244's password:
судя по приведённой выше информации, пользователь на сервере — gitolite
соответственно:
$ git clone gitolite@test:testing.git

upd. долго страница висела открытой, ответ запоздал·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: Gitolite: не авторизуется пользователь

Сообщение IMB »

sash-kan писал(а):
25.05.2012 11:58
судя по приведённой выше информации пользователь на сервере — gitolite
соответственно:
$ git clone gitolite@test:testing.git

На мой взгляд это не очевидно, а в документации я этого не увидел.
Для примера, FTP-сервер работает от имени ftpd и хранит таблицу виртуальных пользователей. При соединении с сервером пользователь указывает свой логин и пароль, а не логин пользователя от имени которого работает сервер. Эта схема проста и понятна, или возможно более привычна.
Думаю такое поведение gitolite объясняется особенностями работы ssh.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Gitolite: не авторизуется пользователь

Сообщение sash-kan »

IMB писал(а):
25.05.2012 12:06
Для примера, FTP-сервер работает от имени ftpd
как работает openssh-daemon (вполне конкретная реализация протокола ssh) вы, мне кажется, уже знаете/узнали:
совершенно верно, у этой реализации нет «виртуальных» пользователей·
(впрочем, подозреваю, что и далеко не у всех реализаций протокола ftp таковые имеются, но это к делу не относится)·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Ответить