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

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

LANG=de_DE.UTF-8
LC_MESSAGES=POSIX

Используемый профиль соединения putty использует 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 ответ1

2

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

Языковые параметры (. $ LANG и с) загружаются сам сервер - в зависимости от дистрибутива, либо source -ный / и т.д. / по умолчанию / локал из файла запуска командного интерпретатора (например , из / и т.д. / профиля), или загрузив ее через PAM с использованием модуля pam_env.

Grep ваши конфигурации PAM в /etc/pam.d для упоминания /etc/default/locale .

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .