Заставить Gitolite извлекать ключи SSH из LDAP

Заставить Gitolite извлекать ключи SSH из LDAP

Думаю, у меня есть некоторые проблемы с пониманием того, чего я хочу достичь...

Итак, начнем с того, что работает в данный момент (все описанные серверы работают под управлением CentOS 7):

  • сервер OpenLDAP, содержащий открытые ключи пользователей
  • сервер «данных», на котором запущен демон OpenSSH, позволяющий пользователям подключаться с помощью их закрытого ключа (с помощью команды ssh)

И теперь моя конечная цель:

  • служба gitolite (на сервере «данных»), которая берет открытые ключи пользователей с сервера OpenLDAP

Я нашел это вЖурнал изменений gitolite:

(пара дополнительных скриптов — запросы к серверам LDAP на базе IPA для членства в группах и управления ключами пользователей)

Поэтому я подумал, что, возможно, я смогу достичь того, чего хочу, но не знаю, как...

Я читал, что также возможно сделать запрос к серверу LDAP, чтобыполучить информацию о группах. Поэтому я хочу верить, что то же самое можно сделать и с открытыми ключами.

Я просматриваю множество ссылок, но не могу найти ничего, что решило бы мою проблему... Если кто-то может дать мне хотя бы небольшую подсказку, было бы здорово :)

Хорошего дня !


PS: просто хотел добавить, что я не боюсь читать/писать много кода. И это не проблема, если вы решите использовать что-то другое, а не gitolite, даже если сохранение gitolite было бы лучше для личных целей.


ПРАВКА1:

Вот как все работает сейчас:

Когда я пытаюсь клонировать репозиторий testing.git по умолчанию с помощью этой команды:

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

Со следующим~/.ssh/config:

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

Мой терминал говорит мне следующее:

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

Но если бы у меня в папке был открытый ключ для моего пользователя (user.pub) keydir, то все было бы хорошо:

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.

А репозиторий git находится здесь:

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

ПРАВКА 2:

Я просто добавляю, как мой сервер данных запрашивает OpenLDAP, чтобы получить открытый ключ пользователя (на всякий случай).

/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'

Я исключил некоторые строки, поскольку они здесь только для целей регистрации.

И благодаря этой конфигурации все пользователи, зарегистрированные в LDAP, могут sshPublicKeyвойти на сервер данных с помощью своего закрытого ключа.

решение1

AuthorizedKeysCommandдля это, sshd_configвероятно, то, что вы хотите посмотреть. Фрагмент документации гласит, что gitolite не поставляется с чем-либо для этого, а скорее полагается на внешние факторы.

sss_authorized_keysНапример, вы можете настроить sssd для аутентификации на сервере LDAP, а затем использовать .

Документация должна быть легкодоступной.

Связанный контент