Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I couldn't find that anywhere so I'm wondering am I the only one hitting such issue.

By default ssh on Red Hat and Debian at least has a ssh_config with SendEnv option passing LC* and LANG variables in the remote session. If one is not root to change /etc/ssh/ssh_config, how can he disable that behavior? SendEnv option seems to be accumulating and I can't see any way to reset it.

And to avoid being asked, I need to avoid passing my locale to test machines to avoid side effects on scripts and programs that rely on locale being the default for the machine.

share|improve this question
    
This is not an answer to your question, but can you solve your problem by invoking the scripts and programs on your test machines through env or with a wrapper script? –  Scott Oct 9 '12 at 20:57
    
yeah, workarounds are possible but inconvenient –  akostadinov Oct 10 '12 at 7:34

4 Answers 4

up vote 10 down vote accepted

You're not the only one. As documented in ssh_config(5) you can't unset SendEnv, because

Multiple environment variables may be [...] spread across multiple SendEnv directives.

If you have root on the test machines you could change AcceptEnv to not accept variables sent by the client, though.

share|improve this answer
1  
crap, I see only -F on command line can help but it's too inconvenient to really use. See bugzilla.mindrot.org/show_bug.cgi?id=1285 –  akostadinov Oct 10 '12 at 7:30

This can't be done in ~/.ssh/config because SendEnv cannot be overridden.

Using aliases won't work for scripts that call ssh.

One alternative is to export a function. E.g. in ~/.bashrc:

function ssh() {
    LANG="en_US.UTF-8" \
    LC_ADDRESS="$LANG" \
    LC_IDENTIFICATION="$LANG" \
    LC_MEASUREMENT="$LANG" \
    LC_MONETARY="$LANG" \
    LC_NAME="$LANG" \
    LC_NUMERIC="$LANG" \
    LC_PAPER="$LANG" \
    LC_TELEPHONE="$LANG" \
    LC_TIME="$LANG" \
    LC_ALL="$LANG" \
    /usr/bin/ssh $@
}
export -f ssh
share|improve this answer

If you are using bash you may set up an alias ssh='LANG= command ssh' to disable LANG passing to the other servers.

share|improve this answer

You can use su - youruser when you are logged in over ssh. This will reinitialize the environment for the user.

Actually you initialize a new session with a new environment.

share|improve this answer
    
Question is to have environment sane automatically. And btw su is not always installed. And you have to type in your password with su. Not useful. There are easier workarounds. –  akostadinov Apr 15 at 8:46

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.