我有一个主机没有非标准terminal的termcap条目,我不能添加它们(策略)。
我使用tmux将terminaltypes设置为此设备无法识别的内容。 在这里没有问题,最坏的情况下,我可以将TERM设置为'xterm'并完成它。 但:
我已经为OpenSSH客户端configuration了一些默认设置,除了其他设置外,我指示它不发送除LANG和LC_ *之外的任何环境variables。
〜/ .ssh / config的相关部分:
Host * SendEnv LANG LC_*
我的OpenSSH客户端版本是6.6.1。
这里是我的SSH会话的logging,删除了不相关的行:
% TERM=you.shall.not.pass ssh -vvv host ... debug1: Connection established. ... debug1: Authentication succeeded (publickey). ... debug1: Sending environment. ... debug1: Sending env LANG = en_GB.UTF-8 debug2: channel 0: request env confirm 0 ... debug3: Ignored env TERM
按照上面的说法,它发送了LANG,写了它忽略了TERM,但不知何故它已经传播给了远程主机:
root@host% echo $TERM you.shall.not.pass
这是你遇到的吗? 这不是一个大问题,但我认为,除非我做错了什么,这是不符合文件。
Ssh不会将TERM的值作为环境variables本身。 用于请求伪terminal(PTY)的SSH协议消息具有用于terminaltypes的字段,以及诸如terminal的宽度和高度的事物。 请参阅RFC 4254,第6.2节 。
尝试运行一个没有PTY的命令,你可能会得到不同的结果,例如:
$ TERM=foo ssh localhost 'echo $TERM' dumb