如何在 ssh 配置中设置 TERM 环境变量?

如何在 ssh 配置中设置 TERM 环境变量?

我在以下位置使用此设置~/.ssh/config

Host server
  Hostname 192.168.x.x
  SetEnv TERM=xterm

但是,当我登录到服务器并执行操作时echo $TERM,我得到了xterm-256color

如何从 ssh 客户端配置文件设置 TERM?

奇怪的是:当以 身份连接时TERM=xterm ssh serverecho $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

相关内容