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

1091
Robert

Когда я подключаюсь к своему 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 

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

1 ответ на вопрос

2
grawity

Это не имеет ничего общего с 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конфигурации, убедитесь, что конфигурация sshd PAM импортирует ее (например, через @include common-session).

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

Спасибо за ответ. Я многому научился, к сожалению, это не решило мою проблему (см. Обновленный вопрос). Robert 7 лет назад 0
Вы сравнили `/ etc / pam.d / sshd`, но сравнивали ли вы другие файлы? grawity 7 лет назад 0
Просто сделал md5sum из `/ etc / pam.d / *`, и они идентичны на обоих серверах. Но я нашел важное отличие. Это был `/ etc / ssh / sshd_config`. Похоже, кто-то удалил важные строки из него. Robert 7 лет назад 0

Похожие вопросы