How not to pass the locale through an ssh connection command
Solution 1:
It sounds like your SSH client is configured to forward the locale settings. You can prevent this by altering your configuration (the global file is typically /etc/ssh/ssh_config
):
# comment out / remove the following line
SendEnv LANG LC_*
Alternatively you can change the configuration of the server, by editing /etc/ssh/sshd_config
on the remote machine (note the d in sshd_config
):
# comment out / remove the following line
AcceptEnv LANG LC_*
Solution 2:
As already explained in other answers, the client will send all environment variables specified via SendEnv
in /etc/ssh/ssh_config
. You can also force ssh
to not send already defined variable names, using your user's configuration.
From OpenSSH man page:
It is possible to clear previously set SendEnv variable names by prefixing patterns with -. The default is not to send any environment variables.
So, to prevent sending your locale, you can put the following into your ~/.ssh/config
:
SendEnv -LC_* -LANG*
Solution 3:
In short:
$ touch ~/.ssh/config
$ ssh -F ~/.ssh/config your_user@your_host
See this answer for details.
Solution 4:
Accepted answer is correct, but, if you don't want to change your config files, you can override specific locale on the command line
LC_TIME="en_US.UTF-8" ssh [email protected]