Назад | Перейти на главную страницу

языковой стандарт не устанавливается правильно через ssh-соединение

У меня есть сервер debian с несколькими установленными языками: de_DE, en_GB и en_US. Я хочу иметь возможность войти в систему через ssh и получить соответствующий языковой стандарт (в моем случае - en_US, другой для кого-то другого). Я запустил dpkg-reconfigure locales и выбрал None в качестве языкового стандарта по умолчанию, как упоминалось здесь: http://wiki.debian.org/Locale. Теперь, когда я вхожу в систему через ssh, я все еще получаю локаль de_DE.

LANG=de_DE.utf8
LANGUAGE=de_DE.utf8
LC_CTYPE="de_DE.utf8"
LC_NUMERIC="de_DE.utf8"
LC_TIME="de_DE.utf8"
LC_COLLATE="de_DE.utf8"
LC_MONETARY="de_DE.utf8"
LC_MESSAGES="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
LC_ALL=de_DE.utf8

Я проверил с помощью ssh -v, клиент ssh действительно отправляет переменную LANG

debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8

Как языковой стандарт все еще устанавливается на DE и как я могу отключить это поведение?

Редактировать: Теперь это работает. Кто-то принудительно установил локаль в / etc / profile ...

Соответствует ли указание предпочтительных для пользователя конфигураций локали в ~ / .profile вашим потребностям?

Кроме того, чтобы избавить вас от раздражения, прекратите пересылку локали от вашего клиента (/ etc / ssh / ssh_config, закомментируйте SendEnv LANG ...) и прекратите прием на сервере (/ etc / ssh / sshd_config).

Или, если хотите, вы можете установить файл ~ / .ssh / environment с желаемыми параметрами. Вам нужно будет включить PermitUserEnvironment в файле / etc / ssh / sshd_config на сервере.

Хорошо, я разобрался. Кто-то жестко закодировал LC_ALL и LANG переменные в /etc/profile, поэтому все остальное было просто проигнорировано. После их удаления локаль теперь устанавливается в соответствии со средой, передаваемой по ssh.

В моем случае при входе в систему с помощью ssh ни одна из обычных настроек локали по умолчанию или переменных среды не работала. Это произошло потому, что я отключил управление сеансом PAM в конфигурации sshd.

Убедитесь, что вы установили

UsePAM yes 

в твоем /etc/ssh/sshd_config файл, по крайней мере, это сработало для меня.