Двухфакторная аутентификация (2FA) требует не только пароль, но и одноразовый код из приложения (TOTP). Даже если пароль утечёт, аккаунт останется защищённым.
Включение 2FA в cPanel
Шаг 1: Откройте настройки
Войдите в cPanel → раздел «Безопасность» → «Двухфакторная аутентификация».
Шаг 2: Установите приложение
На смартфон установите одно из:
- Google Authenticator (iOS/Android)
- Authy (синхронизация между устройствами)
- Microsoft Authenticator
Шаг 3: Отсканируйте QR-код
В cPanel нажмите «Настроить двухфакторную аутентификацию», откроется QR-код. Откройте приложение-аутентификатор → «+» → «Сканировать QR-код».
Шаг 4: Подтвердите
Введите 6-значный код из приложения в поле «Код безопасности» и нажмите «Включить». После этого при каждом входе в cPanel будет запрашиваться код.
Вход в cPanel с 2FA
- Введите логин и пароль как обычно
- Откройте приложение-аутентификатор
- Введите 6-значный код (обновляется каждые 30 секунд)
Восстановление доступа
Если потеряли телефон:
- Используйте секретный ключ для восстановления в другом приложении
- Обратитесь в техподдержку ZevsHost с подтверждением владения аккаунтом
2FA для SSH (дополнительно)
# Установить Google Authenticator PAM
sudo apt install -y libpam-google-authenticator
# Настроить для текущего пользователя
google-authenticator
# Включить в /etc/pam.d/sshd:
auth required pam_google_authenticator.so
# В /etc/ssh/sshd_config:
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
Разбор типичных проблем с TOTP-кодами
Большая часть жалоб на «не принимает код» сводится к нескольким механическим причинам.
Permission denied (publickey,keyboard-interactive).— так SSH сообщает, что все настроенные способы входа, включая TOTP, не прошли. Само сообщение не говорит, какой именно фактор подвёл — пароль, ключ или код, — это видно только в журнале сервера.Do you want authentication tokens to be time-based (y/n)— этот вопрос задаёт утилитаgoogle-authenticatorпри первой настройке. Отвечайтеy: ответnпереключает на счётчик вместо времени, а большинство приложений вроде Google Authenticator и Authy работают именно с time-based режимом и с HOTP синхронизируются плохо.- Код скопирован верно, но сервер всё равно его не принимает — почти всегда означает рассинхронизацию часов. TOTP основан на текущем времени, и модуль допускает лишь небольшой запас отклонения.
- Повторный ввод уже использованного 30-секундного кода отклоняется, хотя формально он ещё «не истёк» — это не баг, а встроенная защита от повторного использования (replay protection) в самом модуле аутентификации.
- Код стабильно «отстаёт» или «спешит» на один шаг — секрет введён правильно, проблема только в часах телефона или сервера, не в самом ключе.
Сравнение приложений для TOTP
| Приложение | Синхронизация между устройствами | Резервное копирование | Особенность |
|---|---|---|---|
| Google Authenticator | Нет (только ручной перенос QR) | Только вручную, экспортом | Простой и минималистичный |
| Authy | Да, между несколькими устройствами | Облачный бэкап, защищён PIN-кодом | Удобство multi-device расширяет поверхность атаки при утечке аккаунта Authy |
| Microsoft Authenticator | Частично, через привязку к аккаунту Microsoft | Через облако Microsoft | Push-подтверждение для сервисов Microsoft |
| Аппаратный ключ FIDO2/U2F | Нет | Физическое устройство, нужен запасной ключ | Не подвержен фишингу кода, но это не TOTP |
Когда 2FA в таком виде не подходит
- Общий аккаунт, которым одновременно пользуются несколько человек — TOTP на одном телефоне блокирует остальных, если владелец недоступен, а раздача общего секрета всей команде сводит ценность второго фактора почти к нулю.
- Автоматизированные скрипты и cron-задачи, обращающиеся к cPanel API — TOTP рассчитан на интерактивный ввод и не встраивается в автоматизацию; для API нужны отдельные API-токены, а не связка пароль плюс код.
- Пользователь без смартфона и без возможности поставить TOTP-приложение на компьютер — понадобится запасной канал восстановления, иначе поддержка не сможет мгновенно подтвердить личность при потере доступа.
- Ожидание, что 2FA защитит от кражи уже открытой сессии — второй фактор проверяется только при входе; захваченные cookie сессии или SSH-соединение он задним числом не разлогинит.
Проверка, что вход без второго фактора невозможен
# Проверить, что модуль подключён в PAM
grep google_authenticator /etc/pam.d/sshd
# Посмотреть действующую конфигурацию sshd, а не только файл
sudo sshd -T | grep -i authenticationmethods
# Тестовый вход в отдельном окне терминала, не закрывая текущую сессию
ssh user@server-ip
Открывайте новое подключение именно в отдельном окне: если вход не пройдёт, старая сессия останется рабочей и вы сможете откатить настройки, не потеряв доступ к серверу. Для cPanel сверьтесь со списком пользователей с включённой двухфакторной аутентификацией в WHM — там видно, для кого 2FA действительно активна, а не просто когда-то была настроена.