locale not getting set correctly over ssh connection

I have a debian server with several locales installed, de_DE, en_GB and en_US. I want to be able to login over ssh and get the locale set accordingly (to en_US in my case, different for someone else) I ran dpkg-reconfigure locales, and selected None as the default locale as mentioned here: http://wiki.debian.org/Locale. Now, when I login over ssh I still get the de_DE locale.

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

I checked with ssh -v, the ssh client is indeed sending the LANG variable

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

How is the locale still getting set to DE and how can I disable that behavior?

Edit: It works now. Someone forcibly set the locale in /etc/profile...


Solution 1:

Is specifying the user-preferred locale configurations in ~/.profile appropriate for your needs?

Also, to save you the annoyance, stop forwarding locale from your client (/etc/ssh/ssh_config, comment out SendEnv LANG...) and stop accepting on the server (/etc/ssh/sshd_config)..

Or, if you prefer, you can set a ~/.ssh/environment file with the options you want. You'll have to enable PermitUserEnvironment on the server's /etc/ssh/sshd_config file.

Solution 2:

Ok, I figured it out. Someone hard coded the LC_ALL and LANG variables in /etc/profile, so everything else was just ignored. After removing these, the locale now gets set according to the environment transmitted by ssh.

Solution 3:

Also please check this file:

/etc/default/locale

if you make it empty then it may help too.

next to already mentioned:

/etc/profile
~/.profile
~/.bashrc

each of those files may include some of

LANG
LANGUAGE
LC_*