SSH-сервер проверяет открытые ключи из другого источника

SSH-сервер проверяет открытые ключи из другого источника

В ssh-подключении с аутентификацией по ключу пользователь отправляет идентификатор открытого ключа, который он хочет использовать. Затем сервер проверяет файл authorized_keys на наличие открытого ключа.

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

Возможно ли это сделать?

решение1

Чтобы изменитьПуть к файлу, вы можете указатьАвторизованныйКлючФайлопция в sshd_config (предполагая, что сервер работает под управлением OpenSSH). Вы можете указать несколько путей, как относительно домашнего каталога пользователя, так и абсолютные пути с %uрасширением до имени пользователя.

Например, чтобы сохранить местоположение authorized_keys по умолчанию идобавлятьфайл в /etc:

AuthorizedKeysFile  .ssh/authorized_keys  /etc/ssh/users/%u.txt

Чтобы использоватьвнешняя команда, если сервер использует OpenSSH 6.2 или более позднюю версию, вы можете указатьAuthorizedKeysCommandв файле sshd_config сервера, указывающем на пользовательскую программу или скрипт.

Программа будет запускаться при каждом входе в систему, получать имя пользователя в качестве параметра командной строки и должна выводить список ключей для этого пользователя (используя тот же формат, что и authorized_keys) через stdout.

Например, если вы используете LDAP,ССДКлиент LDAP уже включает в себя инструмент sss_ssh_authorizedkeysдля извлечения ключей из атрибута sshPublicKey пользователя.

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody

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