Открытый ключ или пароль и Google Authenticator для входа по SSH

Открытый ключ или пароль и Google Authenticator для входа по SSH

Я нашел статью (http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/), в котором объясняется, как настроить OpenSSH для запроса кода Google Authenticator при успешном входе в систему.

Можно ли настроить OpenSSH так, чтобы происходило следующее:

  • Если у пользователя есть правильный закрытый ключ для входа на сервер, войдите в систему.
  • Если у пользователя нет закрытого ключа, позволяющего войти на сервер, запросите у пользователя пароль учетной записи и код Google Authenticator.

Это было бы удобно (поскольку на моих компьютерах мне нужен был бы только закрытый ключ) и безопасно (поскольку я мог бы оставить аутентификацию по паролю включенной и безопасной).

Есть ли способ добиться того, чего я хочу?

Заранее спасибо. :)

решение1

Определенно возможно настроить так, 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 вместо программных, и это YubiKey, которые поддерживают только HOTP OATH.

Единственная загвоздка в том, что когда вы подключаетесь по ssh, не предоставляя действительный ключ, он запрашивает OATH-код.допароль. Я не смог заставить его работать наоборот, но решил, что мне все равно; подсказки довольно ясно дают понять, какой токен запрашивается.

решение2

Вам необходимо добавить:

AuthenticationMethods publickey keyboard-interactive

без запятой между publickeyи keyboard-interactiveдо /etc/ssh/sshd_config. Все остальные настройки менять не нужно (при условии, что конфигурация соответствует данному уроку howtogeek).

Связанный контент