Esta pagina se ve mejor con JavaScript habilitado

Servidor Gitolite en FreeBSD

 ·  🎃 kr0m

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 y controlar el acceso a los repositorios de forma minuciosa mediante keys ssh.

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? []:
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 REPO_NAME”
git push

Ahora kr0m ya podrá utilizar el repositorio REPO_NAME:

git clone gitolite@IP_GITOLITE_SERVER:REPO_NAME.git

Si queremos migrar un repositorio a GitOlite es tan sencillo como crear el repositorio mediante la config de gitolite-admin y subirla:

cd gitolite-admin
vi conf/gitolite.conf

repo REPO_NAME
    RW+     =   kr0m
git add conf/gitolite.conf
git commit -m "New REPO_NAME repository to be migrated"
git push

Después nos desplazamos hasta donde se tenga clonado el repositorio a migrar y cambiamos la origin-URL:

git remote set-url origin gitolite@datadyne.alfaexploit.com :REPO_NAME.git
git push

Si te ha gustado el artículo puedes invitarme a un RedBull aquí