С OpenSSH 6.2 опция использовать внешнюю программу для основанной на паре ключей аутентификации доступна с AuthorizedKeysCommand
.
Согласно sshd_config
страница справочника, эта программа должна возвратить нуль или больше строк authorized_keys
вывод.
Принятие настроенной программы возвращает несколько ключей, есть ли путь (в нисходящем направлении в, скажем, ForceCommand
) определить, какой из возвращенных ключей использовался для аутентификации?
Например, это работает отлично, если у Вас есть отдельный пользователь для каждого ключа. Однако при совместном использовании пользователя (т.е. 'мерзавец'), и Вы хотите использовать широкого демона ForceCommand
(настроенный в sshd_config), Вы теряете контекст, которого внешне идентифицированного пользователя, и который ключ использовался для аутентификации.
Gitlab (и Gitosis) делает что-то подобное, где он совместно использует пользователя 'мерзавца', но поддерживает authorized_keys
файл для соединения a key_id
параметр командной строки с их command=
опция, которая позволяет им затем внешне, определяет полномочия. Это, кажется, как они связывают ключевую аутентификацию с командой силы.
Это решение работает отлично в меньшем масштабе, но походит на кошмар для масштабирования многим миллионам пользователей, которых, скажем, имеет GitHub.
Крупный масштаб, высоконадежные установки SSH выполняют свою собственную разветвленную версию OpenSSH? Я не вижу способ объединить в цепочку AuthorizedKeysCommand
и ForceCommand
не поддерживая (как животное) файлы в ванильной установке OpenSSH.
Заранее спасибо за Вашу справку!
Описание AuthorizedKeysCommand
в sshd_config
должно выдавать на стандартный вывод ноль или более строк вывода authorized_keys
Это означает, что вы можете сгенерировать command =
option complete с аргументами командной строки (или любой другой допустимый параметр authorized_key
).
Например, динамически сгенерированная строка может выглядеть примерно так:
no-port -forwarding, no-agent-forwarding, no-X11-forwarding, command = "/ path / to / program arg1 arg2 arg3 '" ssh-rsa bigHugeLongLongKey alias
Спасибо @kasperd за направление!