Fir*_*Fly 9 colors ssh unicode
可以通过in 配置在打开连接时sshd
显示的横幅。请注意,这会在身份验证发生之前显示,即使未启动交互式 shell(例如,通过)。Banner /etc/motd.ssh
sshd_config
scp
但是,如果此横幅包含可打印 ASCII 范围之外的字符,则它们似乎已被转义。有什么方法可以禁用这种转义,或者在支持可打印 ASCII 范围之外的此类字符的连接上将文本输出发送回客户端的替代方法?
这对于颜色转义序列和 Unicode 字符都很有用。
它提到的一个地方是在 Linux From Scratch 项目中。我发现这个页面的标题是:/etc/issue (Customizing your login)。
摘抄
/etc/issue 文件是一个纯文本文件,它也接受某些转义序列(见下文)以插入有关系统的信息。还有文件 issue.net 可以在远程登录时使用。但是,ssh 只会在您在配置文件中设置该选项时使用它,并且也不会解释下面显示的转义序列。
作为证明这是不可能的,还有来自论坛帖子的摘录:Re: ssh and banners Aug 18 2009 01:20PM,讨论了在 OpenSSH 中实现横幅打印的功能。
摘抄
进一步挖掘之后,我发现 ssh 源(特别是 sshconnect2.c)中有一个名为“input_userauth_banner”的函数,用于显示来自服务器的横幅。横幅的文本现在通过另一个名为“strnvis”的函数进行过滤,该函数将不可打印的 ascii 字符编码为可打印的文本,即:八进制代码。这就是 ansi 转义序列显示为“\033[”的原因。strnvis 的文档没有提到任何安全问题,只有可能与不可打印字符相关联的“意外行为”。
最后,我鼓励您查看 OpenSSH 的发行说明。它们以及管理 SSH v1 和 v2 规范的 RFC 都在这里。
此RFC 涵盖了该Banner
功能的一些行为。本节“5.4. 横幅消息”详细介绍了为什么不允许这样做。这一段是说这是明确不允许的。
摘抄
如果显示“消息”字符串,则应使用 [SSH-ARCH] 中讨论的控制字符过滤来避免通过发送终端控制字符来进行攻击。