No meu Kubuntu ou Debian existe um arquivo /etc/default/locale como:
# File generated by update-locale LANG="pl_PL.UTF-8"
É mencionado em vários arquivos /etc/pam.d/* . Este é um fragmento de /etc/pam.d/sshd :
# Read environment variables from /etc/environment and # /etc/security/pam_env.conf. session required pam_env.so # [1] # In Debian 4.0 (etch), locale-related environment variables were moved to # /etc/default/locale, so read that as well. session required pam_env.so user_readenv=1 envfile=/etc/default/locale
Agora, em man 5 pam.conf :
When a PAM aware privilege granting application is started, it activates its attachment to the PAM-API. This activation performs a number of tasks, the most important being the reading of the configuration file(s):
/etc/pam.conf. Alternatively, this may be the contents of the/etc/pam.d/directory. The presence of this directory will cause Linux-PAM to ignore/etc/pam.conf.
Quando um usuário efetua login via SSH, sshd se bifurca e é nesse momento que /etc/pam.d/sshd faz seu trabalho. Consulte man 8 pam_env , ele é responsável por definir / desativar variáveis de ambiente. Eu não tinha certeza se sshd forks antes ou depois de aceitar variáveis de um cliente, então fiz um teste simples. Eu comentei esta única linha no meu servidor Debian:
session required pam_env.so user_readenv=1 envfile=/etc/default/locale
e o problema que você apontou foi corrigido (testado com LANG=C ssh myserver no meu caso). Eu descomentei a linha e a questão reapareceu.