Я установил gitosis и могу тянуть / проталкивать ssh. Gitosis установлен на сервере Debian Lenny, я использую git с Windows-машины (msysgit). Странно, если я включу loglevel = DEBUG
в gitosis.conf я вижу что-то подобное при выполнении каких-либо действий с сервером gitosis:
D:\Kaze\source\test-project>git pull origin master
DEBUG:gitosis.serve.main:Got command "git-upload-pack 'test_project.git'"
DEBUG:gitosis.access.haveAccess:Access check for 'kurokikaze@example.com' as 'writable' on 'test_project.git'...
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'test_project.git', new value 'test_project'
DEBUG:gitosis.group.getMembership:found 'kurokikaze@example.com' in 'test'
DEBUG:gitosis.access.haveAccess:Access ok for 'kurokikaze@example.com' as 'writable' on 'test_project'
DEBUG:gitosis.access.haveAccess:Using prefix 'repositories' for 'test_project'
DEBUG:gitosis.serve.main:Serving git-upload-pack 'repositories/test_project.git'
From 192.168.175.128:test_project
* branch master -> FETCH_HEAD
Already up-to-date.
Вопрос: почему я kurokikaze@example.com? Этот адрес электронной почты находится в глобальном user.email
config тоже.
Вчера, когда гитозис был установлен, он видел меня как kaze @ KAZE, это имя, под которым меня добавили в группу gitosis-admin (и это сработало). Но сегодня мерзавец (или гитозис) начал видеть во мне kurokikaze@example.com. Это верно для всех репозиториев, которые я нажимаю или клонирую. Мне пришлось добавить этот адрес в gitosis.conf
прямо на сервере, чтобы снова иметь возможность редактировать конфиги (это сработало). Есть 2 открытых ключа в keydir
: kurokikaze@example.com.pub
и kaze@KAZE.pub
, их содержание идентично, и у них есть kaze @ KAZE в конце. URL источника выглядит так git@lennyserver:test_project
.
Теперь вопрос в том, почему Git (или gitosis) вдруг решил позвонить мне по электронной почте вместо имя @ machinename? Я изменил пару вещей, пытаясь настроить Gitosis (например, обновил git на сервере до 1.6.0), но, может быть, я что-то сломал в своей локальной установке git?
С точки зрения Gitosis, ваше имя - это просто имя, в keydir
, открытого ключа, с помощью которого вы прошли аутентификацию. Никакая конфигурация на вашем локальном компьютере не имеет значения, за исключением того, что она влияет на то, какой открытый ключ вы используете, а строка в конце ключа не имеет значения - только имя файла.
Вы дали своему открытому ключу два имени, поэтому при аутентификации с помощью этого ключа не определено, какое из них он найдет, когда ищет имя для этого ключа. Когда вы меняли какие-то другие вещи в Gitosis, по-видимому, произошло изменение произвольного выбора найденного имени.
(В частности, я считаю, что Gitosis генерирует свои собственные authorized_keys
содержать все ключи в keydir
, по одному в строке, с возможностью указать sshd
чтобы позволить пользователю запускать Gitosis только контролируемым образом и сообщать Gitosis имя ключа. Если у нескольких строк один и тот же ключ, я не уверен, какой из них sshd
в конечном итоге использует - может быть, первый, может быть, последний, может быть, произвольно. Порядок, в котором их записывает Gitosis, также может быть произвольным. Но на самом деле детали того, как происходит произвольный выбор, не имеют значения, потому что никто не гарантирует, что они не изменятся в следующем обновлении на sshd
или gitosis
.)
Вы должны выбрать, какое имя вы хотите использовать для обозначения себя в конфигурации Gitosis, и оставить его в keydir
только копия вашего ключа под этим именем.