Conflicting TERM env var with SetEnv feature.

David Newall openssh at
Sat Nov 17 02:24:10 AEDT 2018

On 17/11/18 12:32 am, Raphael Medaer wrote:
> Actually if you use "-o" it's also overridden. Looking at sshd
> logging, it seems that the env var is overridden because of session
> mechanism (aka "not ordering of parameter source").
> Thus is it a non-issue due to priority of configuration source ? Does
> it mean that the priority is "env var" > "cmd line arguments" >
> "configuration directive" ?

Tl;dr: you are right, and TERM is special.

Reading the source, I see that TERM is treated specially.  This is 
explicit in ssh_config(5), which says, "Note that the TERM environment 
variable is always sent whenever a pseudo-terminal is requested as it is 
required by the protocol."

Whether or not the configuration should be able to force a different 
TERM than the environment is a matter for debate. TERM is used far and 
wide, and needs to be consistent with the actual terminal hardware, so 
forcing its value in ssh's configuration file seems wrong.

Note, also, /etc/ssh/ssh_config is not *the* ssh configuration, merely 
the default.  Any user can replace it with a file of their own choosing.

More information about the openssh-unix-dev mailing list