我在以下位置使用此设置~/.ssh/config
:
Host server
Hostname 192.168.x.x
SetEnv TERM=xterm
但是,当我登录到服务器并执行操作时echo $TERM
,我得到了xterm-256color
。
如何从 ssh 客户端配置文件设置 TERM?
奇怪的是:当以 身份连接时TERM=xterm ssh server
,echo $TERM
服务器上显示xterm
。虽然这表明可以传输设置,但它并不能解决问题,因为我需要在配置文件中设置它。此外,在服务器上输入TERM=xterm
可以.ssh/environment
设置它,但它也不能解决问题,因为我无法在服务器上编辑任何内容。
答案1
自 OpenSSH 8.7 (2021-08-20) 起,SetEnv TERM
现已支持:
允许 ssh_config SetEnv 覆盖 $TERM,否则将由协议专门处理。在 ~/.ssh/config 中,对于缺少 terminfo 条目的目标,将 TERM 设置为通用值(例如“xterm”而不是“xterm-256color”)很有用。
答案2
调整配置如下可以作为一种解决方法:
Host server
Hostname 192.168.x.x
RemoteCommand TERM=xterm $SHELL
RequestTTY yes
可能值得一提的是,它有一个警告;当明确地将命令作为参数传递给 ssh、sftp、sshfs 等时,该部分将不再起作用。
答案3
这里只有 TERM 必须决定 - 不应以任何方式在 ssh 中配置它。处理此问题的一种方法是使用适当的终端(使用 TERM=xterm 的终端)。另一种方法是创建 ssh 包装器并在其中检查所需主机的名称,如果匹配,则检查 TERM 是否与 xterm 兼容,如果是,则export TERM=xterm
在 之前执行exec ssh "$@"
。也可以使用 hack 在服务器上进行设置TERM=xterm
(.ssh/environment
假设只使用与 xterm 兼容的终端连接到服务器)。
使用此命令:
TERM=xterm ssh host