Двухфакторная аутентификация ssh сервера добавляет еще один слой безопасности к уже существующему — ввод пары логин/пароль. Ее суть в том, что пользователь должен передать серверу уникальный и временный цифровой код сгенерированный на смартфоне или планшете
Таким образом значительно повышается безопасность сервера, поскольку злоумышленнику недостадочно знать Ваш логин и пароль. Ему еще необходимо завладеть Вашим мобильным устройством с установленным на нем аутентификатором
Установка аутентификатора у пользователя
- Для Google Android и Apple iOS устройств — Google Authenticator
- Для Windows Phone и других Microsoft Windows-based устройств — Authenticator
Настройка аутентификации на сервере
Установка и настройка ssh-сервера проводится с правами пользователя root в текстовой консоли удаленного сервера. OS Ubuntu. Нужно будет открыть несколько ssh-сессий
Открываем первую и устанавливаем аутентификатор
apt install libpam-google-authenticator
Открываем вторую ssh-сессию для пользователя username и запускаем команду
google-authenticator
На вопрос
Do you want authentication tokens to be time-based?
Отвечаем y
Ответ в консоли будет приблизительно следующий
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
https://www.google.com/chart?chs=200×200&chld=M|0&cht=qr&chl=otpauth://totp/username@master3%3Fsecret%3DQAUP6ERU5SQ2VPXQPUQIXBHGME%26issuer%3Dmaster3
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: QAUP6ERU5SQ2VPXQPUQIXBHGME
Your verification code is 995230
Your emergency scratch codes are:
40073654
27216757
73026250
92352634
24789303
Перейдя по ссылке из выхлопа получим QR код, который сканируем при помощи сканера аутентификатора установленного на мобильном устройстве
На вопрос
Do you want me to update your “/home/username/.google_authenticator” file?
Отвечаем y
Do you want to disallow multiple uses of the same authentication token?
Отвечаем y
By default, tokens are good for 30 seconds…
Отвечаем n
Do you want to enable rate-limiting?
Отвечаем y
Переходим в первую консоль и вносим изменения в /etc/pam.d/sshd добавив в самом верху строку
auth required pam_google_authenticator.so nullok
Редактируем /etc/ssh/sshd_config. Находим параметр ChallengeResponseAuthentication и меняем его значение на
ChallengeResponseAuthentication yes
Перечитаем конфиги сервера ssh
service ssh reload
Проверка
Открываем третью ssh-сессию
ssh -l username 192.168.12.3
Если все настроено правильно сервер запросит цифровой код, после ввода которого запросит пароль пользователя
Verification code:
Password:

- Системный администратор с 2000 года
- Участник Freelancehunt, Хабр Q&A, cyberforum
- Кейсы