Faça o Gitolite recuperar chaves ssh do LDAP

Faça o Gitolite recuperar chaves ssh do LDAP

Acho que tenho alguns problemas de compreensão com o que quero alcançar...

Então, vamos começar com o que está funcionando atualmente (todos os servidores descritos estão executando o CentOS 7):

  • um servidor OpenLDAP que contém as chaves públicas dos usuários
  • um servidor de "dados" executando um daemon OpenSSH que permite aos usuários se conectarem graças à sua chave privada (com comando ssh)

E agora, meu objetivo final:

  • um serviço gitolite (no servidor de "dados") que obtém as chaves públicas dos usuários do servidor OpenLDAP

Eu encontrei isso noLog de alterações do gitolite:

(alguns scripts de contribuição - consultando servidores LDAP baseados em IPA para associação a grupos e gerenciamento de chaves de usuário)

Então pensei que seria possível conseguir o que quero, mas não sei como...

Eu li que também é possível consultar um servidor LDAP paraobter informações dos grupos. Então, quero acreditar que é possível fazer as mesmas coisas com chaves públicas.

Viajo por muitos links mas não consigo encontrar algo que resolva o meu problema... Se alguém tiver, pelo menos uma pequena dica, para me dar, seria ótimo :)

Tenha um bom dia !


PS: só queria acrescentar que não tenho medo de ler/escrever muito código. E não é um problema se a solução for usar algo diferente do gitolite, mesmo que manter o gitolite seja melhor para fins pessoais.


EDITAR1:

Então é assim que as coisas funcionam atualmente:

Quando estou tentando clonar o repositório testing.git padrão com este comando:

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

Com o seguinte~/.ssh/config:

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

Meu terminal está me dizendo isso:

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

Mas se eu tivesse uma chave pública para meu usuário (user.pub) na keydirpasta, está tudo bem:

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.

E o repositório git está aqui:

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

EDITAR 2:

Estou apenas adicionando como meu servidor de dados consulta o OpenLDAP para obter a chave pública dos usuários (por precaução).

/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í algumas linhas, pois elas estão aqui apenas para fins de registro.

E graças a esta configuração, todos os usuários cadastrados no LDAP com um sshPublicKeypodem efetuar login no servidor de dados graças à sua chave privada.

Responder1

AuthorizedKeysCommandpois sshd_configprovavelmente é o que você deseja dar uma olhada. O trecho de documentação diz que o gitolite não vem com nada para isso, mas depende de fatores externos.

Você pode configurar o sssd para autenticar no servidor LDAP e depois usar sss_authorized_keys, por exemplo.

A documentação deve ser facilmente encontrada.

informação relacionada