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

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

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

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

1 ответ

Решение

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

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

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

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

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

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

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
Другие вопросы по тегам