Инструменты пользователя

Инструменты сайта


git_i_gitolite

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

git_i_gitolite [2012/12/17 08:06] (текущий)
Строка 1: Строка 1:
 +====== Git и Gitolite ======
 +OS: Debian 7 GNU/Linux wheezy
  
 +Gitolite работает поверх [[SSH]] с использованием аутентификации через public-key (точнее,​ это наиболее популярная конфигурация). На сервере заводится единственный реальный пользователь,​ через которого будет происходить работа с репозиториями. А «магия» gitolite заключается в том, что в authorized_keys эти ключики попадают с опцией «command=[path]/​gl-auth-command ...». Эта опция предписывает ssh- серверу запускать указанную команду независимо от того, что реально хотел исполнить пользователь. При этом оригинальная команда сохраняется в переменной SSH_ORIGINAL_COMMAND,​ которую и считывает gitolite, чтобы узнать,​ что от него хотели.
 +
 +<note warning>​Вы не должны устанавливать ключи на сервер вручную (через ssh-copy-id). Всё надо делать через gitolite-admin/​keydir и gitolite-admin/​conf/​gitolite.conf. В первую папку кладёте публичный ключ, в gitolite.conf прописываете имя пользователя,​ совпадающее с именем ключа до .pub Дело в том, что gitolite не просто добавляет ключи в .ssh/​authorized_keys,​ а записывает там команду,​ по которой потом и происходит авторизация в gitolite.
 +Выглядит это в authorized_keys так
 +<​file>​
 +command="/​usr/​local/​bin/​gl-auth-command username",​no-port-forwarding,​no-X11-forwarding,​no-agent-forwarding,​no-pty ssh-rsa дальше пошел ключ
 +</​file>​
 +</​note>​
 +===== Инсталляция Gitolite =====
 +  * Установка git- сервера и Gitolite. Существует 4 способа установки [[Gitolite]]. На сервере на котором будут располагаться репозитории:<​file>​
 +# aptitude install git gitolite
 +</​file>​
 +  * Создание серверного git- пользователя,​ который будет общим для всех клиентов git. Gitolite управляет несколькими репозитариями под одной учетной записью пользователя,​ с использованием SSH ключей для идентификации пользователей. Конечным пользователям не нужны учетные записи на сервере,​ они будут входить через один общий аккаунт,​ который не позволит им запускать произвольные команды.<​file>​
 +# useradd -d /​home/​gitserver/​ -m -c 'git version control'​ git
 +# passwd git
 +</​file>​
 +  * На клиентском хосте управления gitolite можно создать нового пользователя gitadmin, либо воспользоваться уже существующим<​file>​
 +# /​usr/​sbin/​useradd gitadmin
 +# passwd gitadmin
 +</​file>​
 +  * Настраиваем [[ssh]] авторизацию по rsa- ключам админ- хоста на сервер. Для этого создадим на админском компьютере ключи и скопируем их на сервер. Важно имя файла до .pub должно совпадать с именем пользователя,​ в этом случае имя user, поэтому при копировании переименовываем id_rsa.pub в user.pub<​file>​
 +$ ssh-keygen -t rsa -C "​gitadmin777@gmail.com"​
 +[user@client ~]$ scp ~/​.ssh/​id_rsa.pub user@server.example.org:/​tmp/​user.pub
 +</​file>​После копирования публичного ключа, авторизация пользователя git с админского хоста должна происходить без запроса пароля на сервере.
 +  * На сервере запускаем настройку. Инициализируем Gitolite своим ключом (этот пользователь будет администратором репозиториев)<​file>​
 +# sudo -u git -i
 +$ gl-setup /​tmp/​user.pub
 +</​file>​
 +  * Инсталляция закончена. Остается выгрузить репозиторий gitolite-admin,​ в котором создаются новые репозитории. Создадим для примера новый репозиторий Test777<​file>​
 +[user@client ~]$ git clone gitolite@server.example.org:​gitolite-admin
 +$ cd gitolite-admin
 +$ nano conf/​gitolite.conf
 +repo    gitolite-admin
 +        RW+     ​= ​  user
 +
 +repo    testing
 +        RW+     ​= ​  @all
 +
 +repo    test777
 +        RW+     ​= ​  user
 +        RW+     ​= ​  @all
 +$ git add .
 +$ git commit -am 'Added repo Test777'​
 +$ git push origin master
 +</​file>​
 +===== Управление Gitolite =====
 +
 +  * **Посмотреть какие репозитории доступны на сервере и какие права есть у вас для этих репозиториев**:​
 +<​file>​
 +$ ssh git@server.example.org info
 +hello user, this is gitolite 2.3-1 (Debian) running on git 1.7.10.4
 +the gitolite config gives you the following access:
 +     ​R ​  W gitolite-admin
 +    @R  @W test777
 +    @R_ @W_ testing
 +</​file>​
 +
 +  * В отличии от [[gitosis]] в gitolite можно предварительно не создавать репозиторий через init, достаточно добавить его в конфигурационный файл.
 +  * @all — особая,​ предопределенная группа. Она описывает — в зависимости от контекста — всех аутентифицированных пользователей,​ или все репозитории.
 +  * Базовые права доступа в gitolite.conf:​
 +        * R — позволяет чтение
 +        * RW — позволяет делать push в существующий ref или создавать новый ref
 +        * RW+ — позволяет делать «push -f» или удалять ref (т.е. уничтожать информацию)
 +        * -(минус) — запрещает доступ
 +  * **Добавление нового пользователя**. Перед добавлением нового пользователя создаем (получаем от него) его публичный ключ. После получения ключа, переименовываем его, что бы имя файла было похоже на имя_пользователя.pub. Скопируем ключ в директорию keydir. Отредактируем файл conf/​gitolite.conf,​ для добавления нового репозитория,​ пользователя и прав доступа. Имена пользователей должны совпадать с имена файлов их публичных ключей,​ без расширения. Commit и push правок на сервер репозитория gitolite-admin.
загрузка...
git_i_gitolite.txt · Последние изменения: 2012/12/17 08:06 (внешнее изменение)