SSH: двухфакторная аутентификация
В настоящее время у меня есть Ubuntu Server 12.04, на котором работает OpenSSH, а также Samba и несколько других сервисов. В настоящее время у меня настроена аутентификация с открытым ключом, и мне интересно, возможно ли установить двухфакторную аутентификацию? Я просматривал Google Authenticator, который сейчас использую в своей учетной записи Gmail.
Я обнаружил, что модуль PAM выглядит так, как будто он будет совместимым, однако кажется, что вы вынуждены использовать пароль и сгенерированный код.
Мне интересно, есть ли способ использовать приложение Google Authenticator (или что-то подобное) вместе с моим открытым ключом для аутентификации на моем SSH-сервере?
7 ответов
Red Hat добавил патч к OpenSSH в RHEL (и, следовательно, CentOS) 6.3, чтобы требовать нескольких механизмов аутентификации, чтобы вы могли сделать что-то вроде этого:
RequiredAuthentications2 publickey,keyboard-interactive
См. Примечания к выпуску для не очень подробной информации.
К сожалению, эта функция, по-видимому, отсутствует ни в OpenSSH, ни в Ubuntu 12.04, поэтому, если вы не хотите найти патч и перекомпилировать OpenSSH, боюсь, вам не повезло.
Вы можете использовать как модуль PAM Google Authenticator, так и открытые ключи, но для данной аутентификации будет использоваться только один. То есть, если пользователь входит в систему с авторизованным открытым ключом, токен не требуется.
Или, говоря иначе: токены требуются только для аутентификации пароля, а не для ключей SSH.
Между прочим, это ограничение исходит не от модуля Google Authenticator, а от SSH, который реализует только двухфакторную аутентификацию (через ChallengeResponseAuthentication
) для PAM, но не вызывает PAM, когда предоставляется действительный открытый ключ.
Этот вопрос с 2012 года. С тех пор SSH изменился, и был внедрен протокол SSH2.
В более поздних версиях SSH ( >= 6.2) man sshd_config упоминает:
AuthenticationMethods
Specifies the authentication methods that must be successfully completed for a user to be
granted access. This option must be followed by one or more comma-separated lists of
authentication method names. Successful authentication requires completion of every method
in at least one of these lists.
For example, an argument of ``publickey,password publickey,keyboard-interactive'' would
require the user to complete public key authentication, followed by either password or key-
board interactive authentication. Only methods that are next in one or more lists are
offered at each stage, so for this example, it would not be possible to attempt password or
keyboard-interactive authentication before public key.
This option is only available for SSH protocol 2 and will yield a fatal error if enabled if
protocol 1 is also enabled. Note that each authentication method listed should also be
explicitly enabled in the configuration. The default is not to require multiple authentica-
tion; successful completion of a single authentication method is sufficient.
На этой странице http://lwn.net/Articles/544640/ также упоминается возможность одновременного использования publickey и PAM-аутентификации.
Я знаю, что этот вопрос немного устарел, но ради будущих людей (включая меня), которые ищут решение, также говорят об использовании параметра ForceCommand в файле sshd_config для запуска сценария, который затем выполняет аутентификацию. Здесь приведен пример сценария, который вы можете немного изменить в соответствии со своими потребностями, хотя в этом примере он вызывает его из файла авторизованного ключа вместо того, чтобы делать его общесистемным с помощью ForceCommand sshd_config.
Получите YubiKey и следуйте этому руководству http://berrange.com/posts/2011/12/18/multi-factor-ssh-authentication-using-yubikey-and-ssh-public-keys-together/
AFAIK, это лучший способ внедрить Yubikey на вашем сервере для доступа по SSH. Приведенное выше руководство позволяет вам использовать открытый ключ + yubikey, тогда как если вы пользуетесь официальным руководством ( http://code.google.com/p/yubico-pam/wiki/YubikeyAndSSHViaPAM), оно не работает с открытым ключ.
С уважением, Vip
Если вы установили фразу-пароль для своего закрытого ключа, то у вас уже есть двухфакторная аутентификация. Для входа в систему людям потребуется:
- что-то у вас есть - ваш личный ключ
- что-то, что вы знаете - пароль для вашего личного ключа