Думаю, у меня есть некоторые проблемы с пониманием того, чего я хочу достичь...
Итак, начнем с того, что работает в данный момент (все описанные серверы работают под управлением 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, а затем использовать .
Документация должна быть легкодоступной.