Открытый ключ или пароль и Google Authenticator для входа в SSH
Я нашел статью ( http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/), в которой объясняется, как настроить OpenSSH для запроса Google Authenticator. код после успешного входа.
Можно ли настроить OpenSSH так, чтобы происходило следующее:
- Если у пользователя есть правильный закрытый ключ для входа на сервер, войдите в систему.
- Если у пользователя нет личного ключа, разрешенного для входа на сервер, спросите у пользователя пароль учетной записи И код Google Authenticator.
Это было бы удобно (поскольку на моих компьютерах мне нужен был бы только закрытый ключ) и было бы безопасно (поскольку я мог оставить аутентификацию по паролю включенной и безопасной).
Есть ли способ выполнить то, что я хочу?
Заранее спасибо.:)
2 ответа
Определенно можно настроить 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 каждые n секунд), но я использую аппаратные токены OATH вместо программных, и они являются yubikeys, которые выполняют только HOTP OATH.
Единственная проблема заключается в том, что когда вы вводите ssh без действительного ключа, он запрашивает код OATH перед паролем. Я не мог заставить это работать наоборот, но решил, что мне все равно; подсказки проясняют, какой токен запрашивается.
Вам необходимо добавить:
AuthenticationMethods publickey keyboard-interactive
без запятой между publickey
а также keyboard-interactive
в /etc/ssh/sshd_config
, Все остальные настройки не должны быть изменены (при условии, что конфигурация равна данному уроку howtogeek).