cd /usr/ports/devel/git make install clean
Теперь устанавливаем непосредственно gitosis
cd /usr/ports/devel/py-gitosis make install clean
Установим sudo
cd /usr/ports/security/sudo make install clean distclean rehash
Нужно создать юзера, например git
adduser git
Далее следуем вопросам, оставляем все по умолчанию, только на вопрос об авторизации по паролю надо ответить нет
Use password-based authentication? [yes]: no
Вот такой юзер должен получиться
sername : git Password : <disabled> Full Name : Uid : 1008 Class : Groups : git Home : /home/git Home Mode : Shell : /bin/sh Locked : no
Необходимо разрешить юзеру git удаленный доступ по ссш, для этого в /etc/ssh/sshd_config добавляем строчку
AllowUsers git
и перезапускаем sshd
service sshd restart
Теперь сгенерим ключик для юзера git
ssh-keygen -t rsa
Жмем несколько раз enter, ключик создается в /root/.ssh
Инициализируем gitosis репозиторий, скармливаем ему публичный ключик, который только что создали
sudo -H -u git gitosis-init < /root/.ssh/id_rsa.pub
Должно получиться примерно так
Initialized empty Git repository in /usr/home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /usr/home/git/repositories/gitosis-admin.git/
Gitosis готов, теперь надо добавить ключ со своей машины, чтобы удаленно админить все репозитории.
Для этого зайдем под юзером git
su git cd ~
Создаем временную папку
mkdir ~/tmp cd ~/tmp
Теперь склонируем наш админский репозиторий
git clone ~/repositories/gitosis-admin cd gitosis-admin
Там будет файл gitosis.config вот такого содержания
[gitosis] [group gitosis-admin] members = root@server.ru writable = gitosis-admin
Чтобы иметь возможность управлять им удаленно нужно добавить себя и свой ключ в этот репозиторий.
Для этого во-первых поправим конфиг
[gitosis] [group gitosis-admin] members = root@server.ru Ncs writable = gitosis-admin
Обратите внимание, я дописал в members Ncs.
Ncs это не юзер сервера freebsd, как раз gitosis и позволяет не плодить юзеров.
И во-вторых необходимо положить ПУБЛИЧНЫЙ ключ для доступа Ncs под названием Ncs.pub в директорию keydir
Когда поправлен конфиг и ключ Ncs.pub положен в keydir можно делать коммит
git add . git commit -a -m 'Ncs added' git push origin master
Всё, теперь можно удалить папку tmp.
Чтобы склонировать репозиторий удаленно надо использовать следующий вызов
ssh://git@server.ru:22/gitosis-admin.git
И конечно же, при клонировании нужно указывать ПРИВАТНЫЙ ключ, который является парой для публичного ключа, добавленного в keydir.