Нашла статью (http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/), в котором объясняется, как настроить OpenSSH для запроса кода Google Authenticator при успешном входе в систему.
Можно ли настроить OpenSSH так, чтобы происходило следующее:
Это было бы удобно (поскольку на моих компьютерах мне нужен был бы только закрытый ключ) и безопасным (поскольку я мог оставить аутентификацию по паролю включенной и безопасной).
Есть ли способ добиться того, что я хочу?
Заранее спасибо. :)
Определенно возможно настроить sshd
требовать либо действующая пара ключей или использовать HOTP (новый одноразовый пароль (OTP) для каждого запроса) аутентификация на основе OATH - я это делаю. Я почти уверен, что Google Authenticator - это просто еще одна реализация OATH.
Мою полную рецензию можно прочитать на http://www.teaparty.net/technotes/yubikey-oath.html, но результат таков:
Предполагая, что ваш sshd
уже настроен для разрешения аутентификации на основе открытого ключа (большинство из них), добавьте эти две строки в sshd_config
:
PasswordAuthentication no
ChallengeResponseAuthentication yes
Установить pam_auth
(это ориентированный на CentOS способ для x86_64):
yum install pam_oath
ln -s /usr/lib64/security/pam_oath.so /lib64/security/
Сделайте файл аутентификации /etc/users.oath
, Режим 600
, владелец root:root
и заполните его такими строками, как:
#type username pin start seed
HOTP fred - 123a567890123b567890123c567890123d567890
редактировать /etc/pam.d/sshd
и добавьте строку
auth required pam_oath.so usersfile=/etc/users.oath window=5 digits=8
Пропустить digits=8
если вас устраивает 6-значный HOTP OATH. Я считаю, что аналогичный метод можно использовать для TOTP OATH (новый OTP каждые п секунд), но я использую аппаратные токены OATH вместо программных, а это yubikeys, которые делают только HOTP OATH.
Единственная проблема заключается в том, что когда вы заходите по ssh без предоставления действительного ключа, он запрашивает код OATH. перед пароль. Я не мог заставить все работать наоборот, но решил, что мне все равно; подсказки довольно ясно дают понять, какой токен запрашивается.
Вам нужно добавить:
AuthenticationMethods publickey keyboard-interactive
без запятой между publickey
и keyboard-interactive
к /etc/ssh/sshd_config
. Все остальные настройки изменять не нужно (при условии, что конфигурация соответствует данному руководству howtogeek).