Да, у меня есть настройка, где я могу ssh
подключиться к своему серверу, используя аутентификацию с открытым ключом, и использовать двухфакторную аутентификацию с помощью Google Authenticator + пароль, когда мой закрытый ключ недоступен. Это шаги, которые вы можете использовать для его настройки.
Установка Google Authenticator
Мой сервер работает под управлением Ubuntu Bionic Beaver (18.04.1). Вы можете установить Google Authenticator, используя apt
:
$ sudo apt install libpam-google-authenticator
Конфигурирование sshd
Откройте /etc/pam.d/sshd
и добавьте следующую строку вверху:
auth optional pam_google_authenticator.so
Откройте /etc/ssh/sshd_config
и измените одну строку. Существующая линия
ChallengeResponseAuthentication no
и вы должны изменить его на
ChallengeResponseAuthentication yes
Настройка Google Authenticator для вашей учетной записи
Следующим шагом является включение Google Authenticator для вашей учетной записи. Вы делаете это, просто запустив:
$ google-authenticator
Убедитесь, что вы запускаете это как пользователь, который будет устанавливать ssh-соединения, а не как root. Запишите ваш новый секретный ключ и аварийные коды. Мастер задаст вам несколько вопросов для настройки параметров безопасности вашей учетной записи.
Настройка вашего мобильного приложения
Я использую приложение Google Authenticator для iPhone. В этом приложении есть кнопка [+], которая позволяет мне добавлять новый токен на основе времени, используя секретный ключ, полученный из google-authenticator
команды на моем сервере. Это было тривиально настроить. Я не могу помочь вам с приложениями на любой другой платформе, но я думаю, что процесс такой же простой.
Вытягивание спускового крючка
Последнее, что вам нужно сделать, это перезагрузить sshd
.
$ sudo /etc/init.d/ssh restart
На этом этапе, когда вы пытаетесь подключиться к серверу, когда ваш закрытый ключ доступен, аутентификация просто работает. Когда ваш закрытый ключ недоступен, вы получите запрос на ввод кода подтверждения, затем пароль вашей учетной записи.
Бинго, двухфакторная аутентификация.