Разрешить пользователям подключаться по ssh к определенному пользователю через ldap и сохраненные открытые ключи

Разрешить пользователям подключаться по ssh к определенному пользователю через ldap и сохраненные открытые ключи

Недавно я настроил gitolite, где пользователи получают доступ к репозиторию git под пользователем «gitolite» через ssh.

Теперь я хотел бы интегрировать это в LDAP. У каждого пользователя есть публичный ключ в LDAP, и если у него есть "git" objectClass, он сможет получить доступ к пользователю "gitolite" через ssh.

Я знаю, что можно хранить открытые ключи в LDAP, но не уверен, возможно ли разрешить аутентификацию в учетной записи «gitosis» на основе objectClass.

РЕДАКТИРОВАТЬ:Для ясности, с помощью objectClass git пользователь "foobar" сможет войти как "gitolite" через ssh

решение1

Авторгитолитдобавил некоторые функции, которые помогают поддерживать внешние хранилища ключей и информацию о членстве в группах. ПоискИЗМЕНЕНИЯдля LDAP-протокола.

Чтобы использовать внешнее хранилище ключей,sshdнеобходимо поддерживать обычный .ssh/authorized_keysфайл (это файл, который говоритsshdбежатьgl-auth-командакогдагитолитПользователь входит в систему).

  1. Отключите обычную генерацию ключа аутентификации (на основе ключа keydirиз репозитория gitolite-admin):
    $GL_NO_SETUP_AUTHKEYS = 0;в вашем .gitolite.rc.
  2. Периодически (всякий раз при изменении ключа, добавлении пользователя и т. д.):
    1. Извлеките все ключи SSH из вашего хранилища ключей в какой-нибудь удобный временный каталог (используйте те же имена для файлов ключей, как если бы они находились в обычном репозитории keydir).
    2. Бегатьgl-setup-authkeysиметьгитолитперестроить свою часть файла authorized_keys.

Видетьсообщение о фиксации, которое представилоgl-setup-authkeysдля собственного описания автора.

Использование внешне определенных групп пользователей немного сложнее, поскольку обычно это подразумевает включение другой программы между ними.sshdиgl-auth-команда(членство в группах передается как дополнительные аргументыgl-auth-команда). Видеть«группы пользователей и LDAP/подобные инструменты».

решение2

Если вы хотите попробовать что-то немного необычное, вы делаете .ssh/authorized_keys2 именованным каналом и пишете скрипт/программу, которая запрашивает LDAP, выполняет надлежащую фильтрацию, а затем выдает содержимое ключей authorized_keys. Я предлагаю authorized_keys2, поскольку вы, вероятно, уже используете authorized_keys.

Вам придется быть осторожным со скриптом (следить за блокирующими записями, знать, когда делать новый запрос и т. д.), но он будет выдавать вам правильный ответ каждый раз, если вы все сделаете правильно.

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