Проверьте ssh части о gitolite : тот факт, что вы можете подключиться к server.com
через ssh
только означает:
- ваш ключ ssh зарегистрирован в
server.com@~/.ssh/authorized_keys
- этот ключ не связан с gitolite 'нет опции "
command=
", что означает "независимо от того, что просит поступающий пользователь, принудительно запустите эту команду вместо этого").
Вы находитесь в интерактивном сеансе и можете выполнить любую понравившуюся вам команду.
Что мне не нравится в стороннем учебнике, так это то, что он пытается использовать то же имя для пользователя git и пользователя без полномочий root
Вы должны хранить отдельно :
- пользователь без полномочий root (, который не является учетной записью , просто ключ ssh, который будет связан с gitolite, с правами администратора для
gitolite-admin
репо) - учетная запись хостинга , которое должно быть '
git
', а не gitolite
, а именно во избежание путаницы между двумя режимами использования : git
( войти непосредственно на server.com
, здесь нет ssh ): для выполнения команды git требуется интерактивный сеанс (например, клонирование на сервере репозитория gitolite и выполнение gitolite/src/gl-system-install
) ssh git@server.com
который будет использовать ваш ~/.ssh/id_rsa(.pub)
открытый и закрытый ключи, которые, будучи ключами гитолита, позволят вам клонировать репо gitolite-admin
и отодвинуть это репо
Опять же:
'gitolite' не является истинной учетной записью , только имя, уполномоченное выполнять команды на server.com
как 'git
' (фактическая "учетная запись хостинга", как в" размещении git-сервисов и репозиториев ").
Все остальные пользователи git также будут выполнять команды git для server.com
как git
.
И этого конкретного пользователя (gitolite
)будет связан со слоем авторизации gitolite через механизм принудительных команд , с настройками привилегий во время установки gitolite, чтобы предоставить этому пользователю права на клонирование, изменение и откат gitolite-admin
repo .
(Это его единственное сравнениеd для всех остальных пользователей ssh git, которые вы добавите: у них не будет доступа к этому конкретному репозиторию git, который является gitolite-admin
one)
Попытка назвать двоих с одинаковым именем просто проситпроблема.
Мне не нравится использовать соглашение об именах по умолчанию для открытых / закрытых ключей, поэтому я предпочитаю, чтобы клиент определял эти ключи с именем предполагаемого пользователя:
~/.ssh/gitolite.pub
~/.ssh/gitolite
Затем я определяю файл конфигурации: ~/.ssh/config
, содержащий в нем:
host gitolite
user git
hostname server.com
identityfile ~/.ssh/gitolite
(обратите внимание, что пользователь здесь: всегда git
)
Затем я могу клонировать мой gitolite-amin
репо:
git clone gitolite:gitolite-admin
# modify locally
# git add -A ; git commit -m "my modifs"
git push origin master