Назад | Перейти на главную страницу

Неправильная локаль SSH

У меня есть сервер debian с локализацией hu_HU.UTF-8, и если я захожу в систему через консоль, он отлично работает на венгерском языке. Он также работал с логинами ssh, пока я не отключил PAM в конфигурации sshd. С тех пор, когда я вхожу в систему через ssh, локали устанавливаются на POSIX.

Я пытался прокомментировать AcceptEnv LANG LC_* строка в sshd_config, но проблема все еще остается. Я подключаюсь к Putty с набором символов UTF-8.

Так как я могу это исправить?

PuTTY не устанавливает LANG

Локаль, которую вы установили в PuTTY, полностью отделена от переменных среды в системе. Процитирую его документацию:

К сожалению, для PuTTY и сервера не существует удовлетворительного механизма для передачи этой информации, поэтому обычно его нужно настраивать вручную.

До того, как PuTTY изменил кодировку символов по умолчанию на UTF-8, очень распространенным сценарием для ОС было иметь настройки по умолчанию для локали с включенным UTF-8 (обычно en_US.UTF-8) с PuTTY, неверно интерпретирующим это сам по себе ISO-8859-1:1998 дефолт.

PAM - это больше, чем просто аутентификация

Скорее всего, вы обратились UsePAM на нет, не понимая, что это отключает гораздо больше, чем просто аутентификацию PAM. Оперативные слова из sshd_config man-страницы:

Включает интерфейс подключаемого модуля аутентификации. Если установлено «да», это включит аутентификацию PAM с использованием ChallengeResponseAuthentication и PasswordAuthentication. помимо обработки PAM-аккаунта и сессионного модуля для всех типов аутентификации.

Ваши логины консоли по-прежнему вызывают модули PAM, связанные с account и session услуги, но ваши логины SSH больше этого не делают. Я рекомендую вам повторно включить PAM. На этом этапе вы можете отключить PasswordAuthentication и ChallengeResponseAuthentication если ваша цель - потребовать аутентификацию на основе ключей. (который всегда обходил PAM auth объект)