Автозаполнение SCP не работает, когда для SSH включена двухфакторная аутентификация.

Вопрос или проблема

Я следовал https://ubuntu.com/tutorials/configure-ssh-2fa, чтобы настроить защиту 2FA для SSH в моей системе Ubuntu 22.04.5. У меня включена только аутентификация на основе ключей, поэтому это может быть избыточным, но так считается более безопасным, что даже если каким-то образом мой приватный ключ окажется в свободном доступе, его недостаточно будет для доступа.

Я не хочу вводить код TOTP при подключении с системы в моей локальной сети, поэтому мой /etc/pam.d/sshd выглядит так:

auth [success=done default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth required pam_google_authenticator.so

/etc/security/access-local.conf содержит:

+ : ALL : 192.168.1.0/24
+ : ALL : LOCAL
- : ALL : ALL

Все это работает хорошо. Я запрашиваю код TOTP, когда нахожусь вне своей локальной сети, и не запрашиваю его, когда нахожусь в ней.

Теперь моя проблема в том, что автозаполнение с scp больше не работает. Например, на другой системе я пробую:

$ scp server:someth<TAB>

и something должен автозаполниться, если этот файл существует. Это работает нормально, когда у меня не включен модуль PAM, но не работает, когда он включен. Даже в случае, когда я нахожусь в своей локальной сети и не получаю запроса на ввод кода TOTP, это не работает. Когда я нажимаю TAB, я получаю сообщения вроде этого в /var/log/auth.log сервера:

Oct 26 17:08:13 server sshd[1136620]: Connection closed by authenticating user user 192.168.1.182 port 53145 [preauth]
Oct 26 17:08:13 server sshd[1136732]: Connection closed by authenticating user user 192.168.1.182 port 53146 [preauth]

Сообщения всегда появляются парами для каждого нажатия TAB.

Кто-нибудь знает, что я могу сделать, чтобы это заработало?

Ответ или решение

Проблема с автозаполнением (tab completion) при использовании scp в контексте двухфакторной аутентификации (2FA) через PAM (Pluggable Authentication Module) на вашем сервере Ubuntu 22.04.5 может быть довольно склонна к путанице. Давайте подробно разберёмся в этом вопросе, чтобы вы могли снова пользоваться функцией автозаполнения, одновременно сохраняя уровень безопасности, который вы настроили.

Проблема: Автозаполнение не работает

Когда вы используете scp с включенной двухфакторной аутентификацией, иногда происходит ситуация, когда SSH пытается аутентифицировать соединение, и модуль pam_google_authenticator.so блокирует процесс, что приводит к закрытию соединения, как это видно в логах /var/log/auth.log.

Возможные причины

  1. Проблемы с PAM: Модуль PAM для 2FA может требовать полной аутентификации перед выполнением любой команды, включая автозаполнение.
  2. Предварительная аутентификация: Табуляция в scp вызывает несколько предварительных соединений SSH для получения информации о файлах на удалённой машине, что может приводить к ошибкам аутентификации, если настройки PAM не позволяют этим попыткам проходить без полной аутентификации.

Рекомендации по решению проблемы

1. Изменение конфигурации PAM

Вы можете попробовать изменить порядок аутентификации в вашем /etc/pam.d/sshd. Например, можно добавить условие, которое отключит двухфакторную аутентификацию для локальных IP-адресов:

auth [success=done default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth required pam_google_authenticator.so nullok
  • Ключевое слово nullok разрешает проходить аутентификацию без TOTP, если она недоступна, что может помочь для автоматизации.

2. Настройка SSH

Чтобы scp мог корректно выполнять автозаполнение, убедитесь, что SSH настроен правильно:

  • Проверьте настройки в /etc/ssh/sshd_config, убедитесь, что параметры PermitRootLogin и PasswordAuthentication установлены в нужные значения.
  • Также важно проверить секцию Match в конфигурации SSH, чтобы убедиться, что доступ с локальной сети не блокируется.

3. Логи и отладка

Вернитесь к логам системы (/var/log/auth.log) и посмотрите, есть ли дополнительные ошибки или предупреждения, которые могут дать больше информации о том, что происходит при попытке использования табуляции. Это может помочь вам понять, следует ли пойти другим путём в конфигурации.

4. Альтернативные методы

Если проблема продолжает существовать, рекомендуется рассмотреть использование другого метода для доступа к файлам (например, rsync с autocompletion) или использовать клиент SSH с другим набором функций.

Заключение

Хотя двухфакторная аутентификация — это хороший способ усилить безопасность вашего сервера, она может приводить к подобным проблемам с автозаполнением в scp. Надеюсь, предложенные рекомендации помогут вам исправить эту ситуацию, не снижая уровень безопасности вашей системы. Если вопросы останутся, не стесняйтесь обращаться за дополнительной помощью!

Оцените материал
Добавить комментарий

Капча загружается...