TL;DR: Каков наилучший способ монтировать дома пользователей через SSHFS (или любой другой зашифрованный протокол) при входе в систему, при этом принудительно используя ключи безопасности, такие как Yubikeys и Nitrokeys?
Длинная версия:
Мне нужно построить новую сеть, состоящую (по крайней мере изначально) из одного центрального сервера и нескольких клиентов. Идея состоит в том, чтобы позволить клиентам загружаться через PXE, а затем монтировать все необходимые папки через SSHFS. Это не должно быть проблемой с правильно настроенным pam_mount, если я хочу использовать только имя пользователя и пароль, но мне также нужно обеспечить необходимость использования Yubikey в качестве второго фактора для разблокировки монтирования SSHFS.
Знаете ли вы какие-либо более или менее готовые решения, которые я могу использовать для достижения своей цели?
Для полноты картины, конечно, у меня также было несколько идей, но я не знаю, реализуема ли одна из них:
Использование pam_exec в сочетании с пользовательским скриптом, выступающим в качестве оболочки для всех необходимых шагов. Демон сервера проверит базовую аутентификацию, используя имя пользователя и пароль, и, в случае успеха, ответит вызовом (FIDO2), который клиент будет использовать для создания утверждения FIDO2, которое снова может проверить сервер и, в случае успеха, сгенерировать временный SSH. ключ, открытый ключ которого будет добавлен в файл author_keys, а закрытый ключ будет возвращен клиенту. Через определенное время сервер снова удалит эту запись. Я совершенно уверен, что это осуществимо.
Снова с использованием pam_exec и пользовательского сценария, но на этот раз с добавлением Keycloak в настройку сервера, чтобы демон сервера действовал как поставщик услуг с точки зрения OpenID Connect. Я думаю, проблема здесь в том, что сценарий клиента (оболочки) должен иметь возможность аутентифицироваться в Keycloak, потому что «Прямой грант» / «Грант владельца ресурса» нельзя использовать с двухфакторной аутентификацией на основе аппаратных токенов.
Заранее спасибо за любую подсказку.