Убил пару дней на установку Gitolite. Вроде куча инструкций в интернете, и процесс-то глобально не сложный. Но ни в одной статье нет полного порядка команд, которые надо проделать, чтобы все это дело заработало без проблем.
Подразумевается, что читатель понимает, что такое git и gitolite и умеет с ними работать, рассматривается только вопрос установки.
В коде надо заменить на ваши значения:
server_name_or_ip — Имя сервера или IP адрес
username — Имя пользователя, который станет администратором gitolite.
Операционные системы: сервер — Centos 6.6, компьютер с которого работаю — OS X 10.10.2
Настройка доступа по ключу
На сервере создадим юзера git и зададим ему пароль:
useradd git
passwd git
На локальной машине создаем ключ для текущего пользователя:
ssh-keygen -t dsa -b 1024
И отправляем ключ на сервер (вариант тестировался только на mac — но, вроде, линуксовый синтаксис не отличается):
cat ~/.ssh/id_dsa.pub | ssh git@server_name_or_ip "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
Зададим на сервере права на папку .ssh и файл с ключами (без этого авторизация по ключу работать не будет):
chmod 700 /home/git/.ssh/
chmod 600 /home/git/.ssh/authorized_keys
Заходим на сервере в файл /etc/ssh/sshd_config (не путать с ssh_config) и раскомментируем строки:
RSAAutentification yes
PubkeyAutentification yes
AuthorizedKeysFile .ssh/authorized_keys
Перезапускаем на сервере демон sshd:
service sshd restart
Проверяем с локальной машины доступ по ssh без пароля:
ssh -i ~/.ssh/id_dsa git@server_name_or_ip
Установка gitolite
На сервере:
su git
cd ~
git clone git://github.com/sitaramc/gitolite
mkdir -p ~/bin
gitolite/install -to ~/bin
gl-setup -q ~/username.pub
Далее заходим на сервере в файл /home/git/.ssh/authorized_keys и удаляем первый ключ, который был создан не gitolite — это важно, иначе ничего работать не будет (один из вариантов можно также просто использовать 2 разных ключа — главное понимать, что если есть ключ, который авторизует по SSH — то gitolite с ним же работать не будет).
Проверка работоспособности ключей (на сервере):
/home/git/gitolite/src/gitolite sshkeys-lint
Путь к репозиторию для администрирования gitolite:
git@server_name_or_ip:gitolite-admin
Для пущей безопасности закрываем доступ пользователю git по ssh. Оставляем только возможность работы с git. Для этого заходим в файл /etc/passwd и меняем строчку у пользователя git с /bin/bash на /usr/bin/git-shell
Если что-то пошло не так
Удаляем (на сервере) пользователя git:
userdel git
Удаляем все файлы из его папки и саму домашнюю директорию. У меня это /home/git/.
Пытаемся проделать все заново.
Автор: katzo