Você deve verificar se [PermitUserEnvironment] no seu arquivo de configuração sshd está definido como yes também. Eu não sei qual é o padrão.
Eu tenho um VPS do Debian 6 (64 bits) onde não consigo obter as variáveis de ambiente de localidade LANG e LC_ * definidas. (Tudo abaixo como root).
vps:~# locale -a
C
POSIX
en_US.utf8
nl_NL.utf8
vps:~# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
vps:~# cat /etc/default/locale
# File generated by update-locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_COLLATE=POSIX
Isso deve substituir as configurações de localidade fornecidas por meio do meu cliente SSH, mas as configurações padrão de localidade não surtem efeito.
.profile, .bashrc, / etc / environment e / etc / profile não contêm nenhuma configuração de localidade. Eu também não encontrei nenhum outro local de onde essas variáveis de ambiente são originadas.
me:~# grep "LANG" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~# grep "LC_" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~#
As configurações do meu cliente SSH também não estão em vigor, enquanto elas acontecem em outros VPSs. Localmente, eu tenho em meu / etc / ssh / ssh_config:
SendEnv LANG LC_*
E no VPS, o / etc / ssh / sshd_config contém:
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Não tenho certeza se é necessário que as variáveis entrem em vigor, mas o /etc/pam.d/login do meu VPS contém:
# locale variables are also kept into /etc/default/locale in etch
# reading this file *in addition to /etc/environment* does not hurt
session required pam_env.so readenv=1 envfile=/etc/default/locale
E /etc/pam.d/sshd contém:
# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
auth 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.
auth required pam_env.so envfile=/etc/default/locale
(meu /etc/security/pam_env.conf
contém apenas opções comentadas)
Então, parece que algo não está permitindo que minhas configurações de localidade / etc / default / locale ou do cliente SSH entrem em vigor, portanto, o padrão é POSIX (ou algo está forçando o POSIX explicitamente). Alguma pista do que poderia estar interferindo? Ou ideias para descobrir o que é isso?
Eu posso fazer export LC_CTYPE=en_US.UTF-8
etc. no meu .bashrc, e isso funciona. No entanto, estou tentando entender esse comportamento, que é diferente daquele em outras instalações do Debian (6 ou 7) com as quais estou trabalhando.
Editar: mais alguns detalhes:
UsePAM yes
; en_US.utf8
como nome alternativo em /etc/default/locale
. Você deve verificar se [PermitUserEnvironment] no seu arquivo de configuração sshd está definido como yes também. Eu não sei qual é o padrão.