К основному содержимому

Двухфакторная аутентификация в cPanel: настройка 2FA

Безопасность · 19.04.2026 · 4 мин чтения
Иллюстрация к статье «Двухфакторная аутентификация в cPanel: настройка 2FA»

Двухфакторная аутентификация (2FA) требует не только пароль, но и одноразовый код из приложения (TOTP). Даже если пароль утечёт, аккаунт останется защищённым.

Включение 2FA в cPanel

Шаг 1: Откройте настройки

Войдите в cPanel → раздел «Безопасность» → «Двухфакторная аутентификация».

Шаг 2: Установите приложение

На смартфон установите одно из:

  • Google Authenticator (iOS/Android)
  • Authy (синхронизация между устройствами)
  • Microsoft Authenticator

Шаг 3: Отсканируйте QR-код

В cPanel нажмите «Настроить двухфакторную аутентификацию», откроется QR-код. Откройте приложение-аутентификатор → «+» → «Сканировать QR-код».

✅ Запишите или сфотографируйте секретный ключ под QR-кодом — он нужен для восстановления если потеряете телефон.

Шаг 4: Подтвердите

Введите 6-значный код из приложения в поле «Код безопасности» и нажмите «Включить». После этого при каждом входе в cPanel будет запрашиваться код.

Вход в cPanel с 2FA

  1. Введите логин и пароль как обычно
  2. Откройте приложение-аутентификатор
  3. Введите 6-значный код (обновляется каждые 30 секунд)
⚠️ Коды TOTP действуют 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Через облако MicrosoftPush-подтверждение для сервисов 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 действительно активна, а не просто когда-то была настроена.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке