В настоящее время у меня есть Ubuntu Server 12.04, на котором запущен OpenSSH вместе с Samba и несколькими другими службами. В настоящее время у меня настроена аутентификация с открытым ключом, и мне интересно, можно ли настроить двухфакторную аутентификацию? Я смотрел на Google Authenticator, который сейчас использую со своей учетной записью Gmail.
Я нашел модуль PAM, который выглядит совместимым, однако кажется, что вы вынуждены использовать пароль и сгенерированный код.
Мне интересно, есть ли способ использовать приложение Google Authenticator (или что-то подобное) вместе с моим открытым ключом для аутентификации на моем SSH-сервере?
Ты ищешь Duo Security
Red Hat добавила патч для OpenSSH в RHEL (и, следовательно, CentOS) 6.3, требующий нескольких механизмов аутентификации, поэтому вы можете сделать что-то вроде этого:
RequiredAuthentications2 publickey,keyboard-interactive
Увидеть примечания к выпуску не более подробно.
К сожалению, этой функции нет ни в OpenSSH upstream, ни в 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/ также упоминается возможность одновременного использования открытого ключа и аутентификации PAM.
Я знаю, что этот вопрос немного устарел, но для будущих людей (включая меня), которые ищут решение, также говорится об использовании параметра ForceCommand в файле sshd_config для запуска сценария, который затем выполняет аутентификацию. Есть пример сценария Вот вы можете немного изменить его в соответствии с вашими потребностями, хотя в этом примере он вызывает его из файла authorized_keys вместо того, чтобы делать его общесистемным с помощью ForceCommand sshd_config.
Получите YubiKey и следуйте этому руководству http://berrange.com/posts/2011/12/18/multi-factor-ssh-authentication-using-yubikey-and-ssh-public-keys-topting/
AFAIK, это лучший способ реализовать Yubikey на вашем сервере для доступа по SSH. Приведенное выше руководство позволяет вам использовать открытый ключ + yubikey, тогда как если вы используете официальное руководство (http://code.google.com/p/yubico-pam/wiki/YubikeyAndSSHViaPAM), он не работает с открытым ключом.
С уважением, VIP
Если вы установите парольную фразу для своего закрытого ключа, то у вас уже есть двухфакторная аутентификация. Для входа в систему людям потребуется: