Прежде всего, RedHat (и варианты) имеют поддерживаемый патч для OpenSSH , который добавляет AuthorizedKeysCommand
и AuthorizedKeysCommandRunAs
варианты. Патч был объединён с openssh 6.2. Цитировать из справочной страницы :
AuthorizedKeysCommand
Определяет программу, которая будет использоваться для поиска открытых ключей пользователя. Программа будет вызываться с ее первым аргументом - именем авторизованного пользователя, и она должна выдавать в стандартных выходных строках AuthorizedKeys (см. AUTHORIZED_KEYS в sshd (8)). По умолчанию (или если задана пустая строка) AuthorizedKeysCommand не запускается. Если AuthorizedKeysCommand не может успешно авторизовать пользователя, авторизация переходит к AuthorizedKeysFile. Обратите внимание, что этот параметр действует только при включенной аутентификации PubkeyAuthentication.
AuthorizedKeysCommandRunAs
Указывает пользователя, под учетной записью которого запускается AuthorizedKeysCommand. Пустая строка (значение по умолчанию) означает, что используется авторизованный пользователь.
Сегодня вечером в своих экспериментах я обнаружил, что из коробки это не работает из-за политик SELinux по умолчанию. Вы можете обойти это, отключив принудительное применение SELinux с помощью setenforce 0
. Поскольку использование SELinux, вероятно, является плохой идеей, вместо этого вы можете создать правильную политику. В моем случае это было так же просто, как попытка войти в систему с помощью AuthorizedKeysCommand
опции, настроенной, /etc/ssh/sshd_config
а затем с помощью audit2allow -a -M local && semodule -i local.pp
. Это в основном просматривает журналы аудита и находит вещи, которые были предотвращены, и генерирует исключения для них. Если у вас есть другие вещи, которые могут попасть в белый список, вам, вероятно, стоит узнать больше о том, audit2allow
чтобы убедиться, что вы правильно выбрали новую политику.