Установка gitosis на FreeBsd

Для начала нужно установить сам git
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.