SSH соединение с использованием putty: использовать кодировку "UTF-8" вместо "ANSI_X3.4-1968"?

Когда я подключаюсь к своему Linux-серверу (Ubuntu 14.04), используя putty, у меня возникают некоторые проблемы, потому что SSH-соединение всегда использует ANSI_X3.4-1968 как кодировка (вывод locale charmap).

Однако моя система настроена на использование de_DE.UTF-8 который можно увидеть по cat /etc/default/locale:

LANG=de_DE.UTF-8
LC_MESSAGES=POSIX

Используемый профиль соединения использует замазку UTF-8 как Удаленный набор символов (Окно -> Перевод). Я также пытался использовать значение de_DE.UTF-8 здесь, но не было никаких изменений.

Странно то, что когда я вхожу на физическую консоль, выполняется locale charmap там я получаю правильный и ожидаемый результат: UTF-8,

Почему я получаю разные настроенные кодировки с помощью Putty (v0.67) и физической консоли? Следовательно, это проблема конфигурации замазки или проблема на стороне сервера Linux?

Обновление 1:

Я также сравнил /etc/pam.d/sshd с одним из второго аналогичного сервера, который не подвержен этой проблеме, и оба файла были идентичны. То же самое верно для файла /etc/ssh/ssh_config (оба файла содержат строку SendEnv LANG LC_*).

Я также выполнил следующие команды, чтобы убедиться, что локали не являются дефектными:

sudo locale-gen --purge
sudo update-locale LANG=de_DE.UTF-8

1 ответ

Это не имеет ничего общего с PuTTY. Здесь вы настроили только набор символов терминала, который сообщает PuTTY, как декодировать полученный текст, но никак не передает его на сервер.

Настройки локали ($LANG &c.) Загружаются самим сервером - в зависимости от дистрибутива, либо source-ing / etc / default / locale из файла запуска оболочки (например, из / etc / profile) или путем загрузки его через PAM с использованием модуля pam_env.

Grep ваши настройки PAM в /etc/pam.d для упоминания /etc/default/locale,

  • Если вы найдете соответствующую строку pam_env непосредственно в конфигурации приложения, например /etc/pam.d/loginскопируйте его примерно в то же место в /etc/pam.d/sshd, (Обратите внимание на то, где в стеке он находится.)

  • Если вы найдете подходящую строку в общем common-session config, а затем убедитесь, что конфигурация sshd PAM импортирует ее (например, через @include common-session).

  • Если вы ничего не нашли в PAM, проверьте файлы запуска оболочки.

Другие вопросы по тегам