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, проверьте файлы запуска оболочки.