我在 Linux 开发板上有一个包含一些 ANSI 颜色代码的 /etc/issue 文件。当我从串行终端连接时,一切都显示完美。但是,当我从 SSH 连接时,ESC 字符被替换为“\033”,并且无法被接收端识别,从而阻止 ANSI 代码生效。我该如何修复?
答案1
我该如何修复它?
你不需要。大多数 SSH 客户端(当然是 OpenSSH)都会故意阻止在登录前横幅中输出 ANSI 代码,这样不受信任的服务器就无法向客户端发送有害代码——你无法从服务器端改变这一点(这有点重点)。
建议:
保留横幅的两个副本,一个是用于控制台/串行登录的精美横幅,另一个是用于 SSH 的普通单色横幅,例如 /etc/ssh/issue.net(路径可配置)。
停止使用 SSH 横幅进行图形处理。(说实话,大型的预连接横幅会恼人的如果需要频繁地通过 SSH 连接到服务器。)将花哨的徽标移至登录后 /etc/motd。