屏幕上的 ssh 导致未知终端错误

屏幕上的 ssh 导致未知终端错误

我正在尝试从屏幕内的一台 Ubuntu 主机到另一台主机建立 ssh 连接(通过 lsh)。如果我尝试mc在那之后立即运行,则会收到以下错误:

Unknown terminal: screen-256color-s
Check the TERM environment variable.
Also make sure that the terminal is defined in the terminfo database.
Alternatively, set the TERMCAP environment variable to the desired
termcap entry.

问题是——谁造成了这次失败?是本地主机吗?偏僻的?缺少一些包(哪个?),某些东西不是由lsh-server?完成的或客户?

需要明确的是 - 我不想要像“TERM=xterm mc”这样的解决方法,我希望能够在(远程)控制台上使用支持 256 种颜色的视觉主题。

答案1

只需设置另一个术语,例如

TERM="rxvt"

或者

TERM="xterm"

或者

TERM="vt102"

也许export TERM也有帮助。

该变量由和程序(例如或 )TERM使用,用于从执行命令的 terminfo/termcap 数据库中读取终端转义码,因此在您的情况下是在远程系统中。cursestermcapmcdialog

要支持“screen-256color-s”术语类型,必须在数据库中安装此终端类型。

作为一个很好的起点阅读man 5 terminfo

答案2

最后,我设法找出提供 screen-256-color-s 的“明显”包(必须安装在远程计算机上):

sudo apt install ncurses-term

为我解决了这个问题:漂亮的 256 色,不需要使用环境变量来解决丑陋的问题。万岁! :)

答案3

GNUscreen正在本地设置$TERMssh并将该值传递到远程端。您可以做一些事情。

  • 检测screen-256-color-s远程端并设置为更理智。从此你可以拥有case $TERM in screen-256*) TERM=screen;; esac
  • 从本地端,已screen设置终端。在你的~/.screenrc文件中有:term screen.
  • 如果您有screen打开ssh呼叫的命令,请添加一个-T选项:screen -T screen ssh user@host
  • 在本地~/.bashrc,如果检测到与上面远程端类似的不兼容终端,请设置终端。

相关内容