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 keydir
carpeta, 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 sshPublicKey
servidor de datos pueden iniciar sesión gracias a su clave privada.
Respuesta1
AuthorizedKeysCommand
porque sshd_config
probablemente 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.