Servidor Gitolite en FreeBSD


Gitolite es una capa de control sobre Git, esta nos permitirá ciertas funcionalidades como:

  • Utilizar un único usuario real en el servidor
  • Proveer de acceso a varios usuarios virtuales
  • Controlar el acceso a los repositorios de forma minuciosa
  • Los accesos son controlados mediante ssh keys

Instalamos el software con:

pkg install gitolite

Añadimos el usuario con el que correrá el servicio:

adduser
Username: gitolite
Full name: gitolite
Uid (Leave empty for default):
Login group [gitolite]:
Login group is gitolite. Invite gitolite into other groups? []: no
Group no does not exist!
Login group is gitolite. Invite gitolite into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash git-shell nologin) [sh]:
Home directory [/home/gitolite]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]:
Username   : gitolite
Password   : <disabled>
Full Name  : gitolite
Uid        : 1002
Class      :
Groups     : gitolite
Home       : /home/gitolite
Home Mode  :
Shell      : /bin/sh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (gitolite) to the user database.
Add another user? (yes/no): no
Goodbye!

Toda la configuración de los repositorios se gestiona mediante un repositorio principal llamado gitolite-admin, desde este podremos crear repositorios, administrar permisos y llaves ssh, para poder clonarlo por primera vez debemos importar una key para darle permisos sobre el repo.

Importamos la pubkey del usuario que vaya a clonar:

su -l gitolite
gitolite setup -pk /tmp/kr0m.pub

Desde el pc donde se tenga la private key asociada a kr0m.pub clonamos el repositorio de configuración:

git clone gitolite@IP_GITOLITE_SERVER:gitolite-admin.git

Desde el repositorio gitolite-admin podremos crear los repositorios que necesitemos o permitir a mas usuarios el poder administrar gitolite, un ejemplo de repositorio podría ser este:

vi gitolite-admin/conf/gitolite.conf
repo    REPONAME
    RW+     =   kr0m

La key de kr0m debe estar en el directorio keydir:

ls -la gitolite-admin/keydir/kr0m.pub
-rw-r--r--  1 kr0m  kr0m  395 Jun 25  2019 keydir/kr0m.pub

Con esto kr0m podrá hacer cuanto se le antoje en el repositorio indicado.

Subimos los cambios:

cd gitolite-admin
git add conf/gitolite.conf
git add keydir/kr0m.pub
git commit -m "Asignados permisos a kr0m sobre el repo REPONAME"
git push

Ahora kr0m ya podrá utilizar el repositorio REPONAME:

git clone gitolite@IP_GITOLITE_SERVER:REPONAME.git
Si te ha gustado el artículo puedes invitarme a un redbull aquí.
Autor: kr0m -- 29/03/2020 17:21:41