19.04.2011 14:44

DEViANCEРасшаривание git-репозитория через ssh

Понадобилось расшарить git-репозиторий нескольким разработчикам. Первое, что пришло в голову - gitosis. Поставил, так и не смог допилить для своих нужд. Мне gitosis показался монстрообразным и не удобным. Решил пойти другим путем: создать пользователя git, сделать для него свое окружение в котором и будет доступен репозиторий. Для этого понадобилось: lshell и 10 минут на настройку и тестирование.


Для начала нужно установить lshell. Для Debian-based систем:

1
sudo apt-get install lshell



Далее нужно добавить пользователя. У меня это пользователь git.

1
sudo useradd -s /usr/bin/lshell git



Установим пароль для нашего пользователя:

1
sudo passwd git



Настраиваем lshell под свои нужды, например, можно запретить выполнение каких-то команд по ssh, указать дополнительные директории, в которые разрешен доступ и т.д.

1
sudo nano /etc/lshell.conf



Так же в конце этого файла добавляем:

1
2
3
<git> # Имя созданного пользователя
path : <'/home/git/'> # Директория пользователя
overssh : <'git-upload-pack','git-receive-pack'> # Разрешенные команды по ssh</git>



На этом настройка окончена. Можно залогиниться под созданным пользователем и проверить настройки окружения:

1
ssh git@example.com




Работа с репозиторием

Создаем пустой удаленный репозиторий в директории созданного пользователя:

1
2
3
4
cd /home/git/
mkdir project.git
cd project.git
git init --bare



Переходим в наш локальный репозиторий и добавляем адрес удаленного репозитория:

1
git remote add origin git@example.com:project.git



Затем копируем локальный репозиторий в удаленный:

1
git push origin master:refs/heads/master



Клонирование репозитория на другой машине:

1
git clone git@example.com:project.git




На этом всё! Буду рад любым замечаниям и советам. Возможно есть и более элегантные способы, о которых я не знаю.

Надеюсь, кому-то будет полезно.


Тэги: git gitosis lshell ssh
+ 3 -
Похожие Поделиться

kstep 19.04.2011 15:07 #
Рекомендую gitolite вместо gitosis-а. Он легче и позволяет определять права на конкретные теги/ветки/файлы, в от отличие от.
xT 19.04.2011 15:12 #
присоединяюсь
DEViANCE 19.04.2011 15:13 #
Спасибо, посмотрю на досуге.
uscr 19.04.2011 17:31 #