Hacer que Gitolite recupere claves ssh de LDAP

Hacer que Gitolite recupere claves ssh de LDAP

Creo que tengo algunos problemas de comprensión con lo que quiero lograr...

Entonces, comencemos con lo que funciona actualmente (todos los servidores descritos ejecutan CentOS 7):

  • un servidor OpenLDAP que contiene las claves públicas de los usuarios
  • un servidor de "datos" que ejecuta un demonio OpenSSH que permite a los usuarios conectarse gracias a su clave privada (con comando ssh)

Y ahora, mi objetivo final:

  • un servicio gitolite (en el servidor de "datos") que toma las claves públicas de los usuarios del servidor OpenLDAP

Encontré esto en elRegistro de cambios de gitolite:

(un par de scripts de contribución: consulta de servidores LDAP basados ​​en IPA para determinar la membresía de grupo y la administración de claves de usuario)

Entonces pensé que podría ser posible lograr lo que quiero pero no sé cómo...

He leído que también es posible consultar un servidor LDAP paraobtener información de grupos. Por eso quiero creer que es posible hacer lo mismo con las claves públicas.

Viajo a través de muchos enlaces pero no puedo encontrar algo que resuelva mi problema... Si alguien tiene, aunque sea una pequeña pista, que darme, sería genial :)

Que tenga un lindo día !


PD: solo quería agregar que no tengo miedo de leer/escribir mucho código. Y no es un problema si su solución es usar algo más que gitolita, incluso si conservar gitolita sería mejor para fines personales.


EDITAR1:

Así es como funcionan las cosas actualmente:

Cuando intento clonar el repositorio testing.git predeterminado con este comando:

git clone ssh://git@dataserver/testing.git

Con lo siguiente~/.ssh/config:

host dataserver
    hostname dataserver
    Identityfile ~/.ssh/user
    User git

Mi terminal me dice esto:

Cloning in 'testing'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists

Pero si tuviera una clave pública para mi usuario (user.pub) en la keydircarpeta, todo estaría bien:

git clone ssh://git@dataserver/testing.git
Cloning in 'testing'...
Enter passphrase for key '/home/user/.ssh/user_rsa:
warning: it seems that you've cloned a bare repository.
Verifying connectivity... done.

Y el repositorio de git está aquí:

ls -l | grep testing
drwxrwxr-x 3 user user 4096 mars 23 11:03 testing

EDITAR 2:

Solo estoy agregando cómo mi servidor de datos consulta OpenLDAP para obtener la clave pública de los usuarios (por si acaso).

/etc/ssh/sshd_config:

AuthorizedKeysCommand /usr/bin/ssh-keyldaps %u
AuthorizedKeysCommandUser nobody

/usr/bin/ssh-keyldaps:

ldapsearch       -H ldaps://ldapserver \
                 -b dc=my,dc=domain \
                 -x -LLL \
                 -o ldif-wrap=no \
                 "(&(uid=$uid)(sshPublicKey=*))" 'sshPublicKey' |
                 sed -n 's/^sshPublicKey:\s*\(.*\)$/\1/p'

Excluí algunas líneas ya que están aquí solo para fines de registro.

Y gracias a esta configuración, todos los usuarios registrados en LDAP con un sshPublicKeyservidor de datos pueden iniciar sesión gracias a su clave privada.

Respuesta1

AuthorizedKeysCommandporque sshd_configprobablemente sea lo que quieras ver. El fragmento de documentación dice que gitolite no viene con nada para eso, sino que depende de factores externos.

Puede configurar sssd para autenticarse en el servidor LDAP y luego usar sss_authorized_keys, por ejemplo.

La documentación debe ser fácilmente localizable.

información relacionada