Установка и настройка Gitolite
Gitolite— это средство для создания централизованных репозиториев для совместной разработки через Git.
Gitolite позволяет легко и безопасно размещать репозитории Git, указать права доступа не только для репозиториев, но и для веток или имён меток внутри каждого репозитория. То есть, вы можете указать, что определённые люди (или группы людей) могут отправлять (push) определённые "ссылки" (ветки или метки), а остальные нет. В Gitolite доступ осуществляется по ssh.
Термины:
- Сервером называется хост, на котором установлены git и gitolite и хранятся репозитарии.
- Для управления gitolite нужен админ — технически это обычный клиентский хост, но сам пользователь наделен расширенными правами(серверный и админский хосты могут быть одним и тем же сервером).
- Клиент- хост аналогичен на админскому хосту, но без возможности управления gitolite.
Четыре способа установки Gitolite:
- package method - установка из пакетов
- root method - вы должны быть root на сервере и нужно развернуть несколько Gitolite- серверов (не репозиториев, а именно серверов)
- non-root method - установка одного Gitolite- сервера, не требует root
- from-client - аналогичен предыдущему методу, единсвенное все команды выполняются удаленно с админ-клиентского хоста
Введение Git и Gitolite
Gitolite работает поверх SSH с использованием аутентификации через public-key (точнее, это наиболее популярная конфигурация). На сервере заводится единственный реальный пользователь, через которого будет происходить работа с репозиториями. А «магия» gitolite заключается в том, что в authorized_keys эти ключики попадают с опцией «command=[path]/gl-auth-command …». Эта опция предписывает ssh- серверу запускать указанную команду независимо от того, что реально хотел исполнить пользователь. При этом оригинальная команда сохраняется в переменной SSH_ORIGINAL_COMMAND, которую и считывает gitolite, чтобы узнать, что от него хотели.
command="/usr/local/bin/gl-auth-command username",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa дальше пошел ключ
Инсталляция Gitolite в Debian
- Установка git- сервера и Gitolite. Существует 4 способа установки Gitolite. На сервере на котором будут располагаться репозитории:
# aptitude install git gitolite
- Создание серверного git- пользователя, который будет общим для всех клиентов git. Gitolite управляет несколькими репозитариями под одной учетной записью пользователя, с использованием SSH ключей для идентификации пользователей. Конечным пользователям не нужны учетные записи на сервере, они будут входить через один общий аккаунт, который не позволит им запускать произвольные команды.
# useradd -d /home/gitserver/ -m -c 'git version control' git # passwd git
- На клиентском хосте управления gitolite можно создать нового пользователя gitadmin, либо воспользоваться уже существующим
# /usr/sbin/useradd gitadmin # passwd gitadmin
- Настраиваем Использование ssh, ssh-keygen, sshpass с примерами авторизацию по rsa- ключам админ- хоста на сервер. Для этого создадим на админском компьютере ключи и скопируем их на сервер. Важно имя файла до .pub должно совпадать с именем пользователя, в этом случае имя user, поэтому при копировании переименовываем id_rsa.pub в user.pub
$ ssh-keygen -t rsa -C "gitadmin777@gmail.com" [user@client ~]$ scp ~/.ssh/id_rsa.pub user@server.example.org:/tmp/user.pub
После копирования публичного ключа, авторизация пользователя git с админского хоста должна происходить без запроса пароля на сервере.
- На сервере запускаем настройку. Инициализируем Gitolite своим ключом (этот пользователь будет администратором репозиториев)
# sudo -u git -i $ gl-setup /tmp/user.pub
- Инсталляция закончена. Остается выгрузить репозиторий gitolite-admin, в котором создаются новые репозитории. Создадим для примера новый репозиторий Test777
[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
Управление Gitolite
- Посмотреть какие репозитории доступны на сервере и какие права есть у вас для этих репозиториев:
$ 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
- В отличии от gitosis в gitolite можно предварительно не создавать репозиторий через init, достаточно добавить его в конфигурационный файл.
- @all — особая, предопределенная группа. Она описывает — в зависимости от контекста — всех аутентифицированных пользователей, или все репозитории.
- Базовые права доступа в gitolite.conf:
- R — позволяет чтение
- RW — позволяет делать push в существующий ref или создавать новый ref
- RW+ — позволяет делать «push -f» или удалять ref (т.е. уничтожать информацию)
- -(минус) — запрещает доступ
- Добавление нового пользователя. Перед добавлением нового пользователя создаем (получаем от него) его публичный ключ. После получения ключа, переименовываем его, что бы имя файла было похоже на имя_пользователя.pub. Скопируем ключ в директорию keydir. Отредактируем файл conf/gitolite.conf, для добавления нового репозитория, пользователя и прав доступа. Имена пользователей должны совпадать с имена файлов их публичных ключей, без расширения. Commit и push правок на сервер репозитория gitolite-admin.
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах