
Recentemente configurei o gitolite, onde os usuários acessam o repositório git com o usuário "gitolite" através de ssh.
Agora gostaria de integrar isso ao LDAP. Cada usuário possui pubkey no LDAP e se ele tiver objectClass "git", ele poderá acessar o usuário "gitolite" através do ssh.
Sei que é possível armazenar chaves públicas em LDAP, não tenho certeza se é possível permitir autenticação em conta "gitosis" baseada em objectClass.
EDITAR:Para esclarecer, com objectClass git, o usuário “foobar” seria capaz de fazer login como “gitolite” através de ssh
Responder1
O autor degitolitaadicionou alguns recursos que ajudam a oferecer suporte a armazenamentos de chaves externos e informações de associação a grupos. Procure oREGISTRO DE ALTERAÇÕESpara LDAP.
Para usar um armazenamento de chaves externo, seusshdprecisa suportar o .ssh/authorized_keys
arquivo normal (este é o arquivo que informasshdpara corrercomando gl-authquando umgitolitausuário faz login).
- Desative a geração normal de authkey (aquela baseada
keydir
nogitolite-admin
repositório):
$GL_NO_SETUP_AUTHKEYS = 0;
no seu arquivo.gitolite.rc
. - Periodicamente (sempre que uma chave é alterada, um usuário é adicionado, etc.):
- Extraia todas as chaves SSH do seu armazenamento de chaves em algum diretório temporário e conveniente (use os mesmos nomes para os arquivos de chave como se estivessem no arquivo normal baseado em repositório
keydir
). - Corrergl-setup-authkeysTergitolitareconstrua sua parte do
authorized_keys
arquivo.
- Extraia todas as chaves SSH do seu armazenamento de chaves em algum diretório temporário e conveniente (use os mesmos nomes para os arquivos de chave como se estivessem no arquivo normal baseado em repositório
Vera mensagem de commit que introduziugl-setup-authkeyspara descrição do próprio autor.
Usar grupos de usuários definidos externamente é um pouco mais complicado, pois geralmente envolve a interposição de outro programa entresshdecomando gl-auth(as associações ao grupo são passadas como argumentos extras paracomando gl-auth). Ver“grupos de usuários e ferramentas LDAP/semelhantes”.
Responder2
Se você quiser tentar algo um pouco estranho, faça .ssh/authorized_keys2 um canal nomeado e escreva um script/programa que consulte o LDAP, execute a filtragem adequada e, em seguida, cospe o conteúdo de uma chaveauthorized_keys. Sugiroauthorized_keys2, pois provavelmente você já está usandoauthorized_keys.
Você teria que ter cuidado com o script (observar o bloqueio de gravações, saber quando fazer uma nova consulta, etc.), mas ele lhe daria a resposta certa sempre, se você fizesse certo.