Подготовка сервера
Если вы хотите ставить пакет из репозитория, а не собирать самому, то вам придется воспользоваться предыдущей статьей на этом блоге, в которой подробно написано как добавить экстра репозитории Remi и Epel себе в систему.
Далее проверим и убедимся, что время на сервере в порядке:
yum install ntp -y chkconfig ntpd on; ntpdate pool.ntp.org; /etc/init.d/ntpd start
Если вам необходимо сменить часовой пояс, это просто:
mv /etc/localtime /etc/localtime.old ln -sf /usr/share/zoneinfo/Europe/Athens /etc/localtime hwclock –systohc
Теперь нужен сам пакет, из репозитория:
yum install google-authenticator -y
Или собираем из исходников:
yum install gcc gcc++ pam-devel subversion python-devel git wget make
Выделим для кода папку:
mkdir /root/google-authenticator; cd /root/google-authenticator
Получим код:
git clone https://code.google.com/p/google-authenticator/ cd google-authenticator/libpam/
Скомпилируем код и поставим в систему:
sudo make && make install
Настраиваем OpenSSH
Откроем файл настройки аутентификации и перепилим его:
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak vim /etc/pam.d/sshd
Содержимое:
auth required pamgoogleauthenticator.so auth include password-auth account include password-auth session include password-auth account required pam_nologin.so
Откроем файл настройки OpenSSH:
vim /etc/ssh/sshd_config
И меням «no» на «yes»:
… ChallengeResponseAuthentication yes …
Так-же смотрим что параметр UsePAM включен:
… UsePAM yes …
Перезапускаем демон OpenSSH:
service sshd restart
И запускаем google-authenticator:
google-authenticator
Там видим ссылку на QR код, его сканируем аппликацей Google Authenticator для этого у вас в телефоне должен быть уже установлен ZXing Barcode Scanner которая кстати open source
После того как телефон прочитал QR код можно смело отвечать на все вопросы которые задаст вам утилита: — Сохранить всё насовсем в ~/.google_authenticator? — y — Запретить использование одного кода несколько раз? Помогает заметить или даже предотвратить атаку man-in-the-middle. — y — Увеличить окно времени с приблизительно 1.5 минут до 4 минут? — n (и тут сразу проверяем, точно ли время в телефоне; впрочем, Google Authenticator последних версий умеет синхронизировать время из интернета) — Ограничить число попыток логина за промежуток времени? — y
Теперь можете осуществить логин на сервер (Видно что добавилась строчка Verification code):
login as: root Using keyboard-interactive authentication. Verification code: Using keyboard-interactive authentication. Password: Last login: Mon Sep 9 15:55:44 2013 from
P.S.: Кстати, в новой версии OpenSSH есть возможность замутить аутентификацию по ключу и токену. В старой версии такого нет. В CentOS 6.4 в репах и в системе старая версия 5.3p1, а надо OpenSSH 6.2 минимум. Такую версию для CentOS придется собирать самому. Исходники тут.
P.S2.: Хотя вот нашлись и RPM пакеты тут.