У меня есть сервер debian с локализацией hu_HU.UTF-8, и если я захожу в систему через консоль, он отлично работает на венгерском языке. Он также работал с логинами ssh, пока я не отключил PAM в конфигурации sshd. С тех пор, когда я вхожу в систему через ssh, локали устанавливаются на POSIX.
Я пытался прокомментировать AcceptEnv LANG LC_*
строка в sshd_config, но проблема все еще остается. Я подключаюсь к Putty с набором символов UTF-8.
Так как я могу это исправить?
Локаль, которую вы установили в PuTTY, полностью отделена от переменных среды в системе. Процитирую его документацию:
К сожалению, для PuTTY и сервера не существует удовлетворительного механизма для передачи этой информации, поэтому обычно его нужно настраивать вручную.
До того, как PuTTY изменил кодировку символов по умолчанию на UTF-8, очень распространенным сценарием для ОС было иметь настройки по умолчанию для локали с включенным UTF-8 (обычно en_US.UTF-8
) с PuTTY, неверно интерпретирующим это сам по себе ISO-8859-1:1998
дефолт.
Скорее всего, вы обратились UsePAM
на нет, не понимая, что это отключает гораздо больше, чем просто аутентификацию PAM. Оперативные слова из sshd_config
man-страницы:
Включает интерфейс подключаемого модуля аутентификации. Если установлено «да», это включит аутентификацию PAM с использованием ChallengeResponseAuthentication и PasswordAuthentication. помимо обработки PAM-аккаунта и сессионного модуля для всех типов аутентификации.
Ваши логины консоли по-прежнему вызывают модули PAM, связанные с account
и session
услуги, но ваши логины SSH больше этого не делают. Я рекомендую вам повторно включить PAM. На этом этапе вы можете отключить PasswordAuthentication
и ChallengeResponseAuthentication
если ваша цель - потребовать аутентификацию на основе ключей. (который всегда обходил PAM auth
объект)