如何设置自定义 SSH 连接响应字符串?

如何设置自定义 SSH 连接响应字符串?

是否可以修改建立原始连接时 OpenSSH 服务器显示的字符串?

这与显示的文本横幅无关连接已建立,可以通过Banner中的参数进行配置sshd_config,但关于 SSH 服务器在握手之前在连接尝试时发送的原始输出。

例如,给定一个原始的 telnet 连接

$ telnet localhost 22
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.2p2

有没有办法将识别信息减少到最低限度?

我的理解是,SSH-2.0-必须存在,因为 SSH 协议要求这样做,但是OpenSSH_7.2p2协议可能不需要后面的字符串 - - ,但我看不到在不重新编译的情况下更改或删除它的方法。

其目的是避免提供超出协议运行严格必要范围的信息。

答案1

否。版本字符串在 version.h 中定义OpenSSH 源代码作为

#define SSH_VERSION "OpenSSH_7.4"

您可以更改它,但需要重新编译。

然后通过以下方式发送

snprintf(buf, sizeof buf, "SSH-2.0-%.100s\r\n", SSH_VERSION)

(ssh_api.c 第 381 行,在函数中_ssh_send_banner

也可以看看:防止 SSH 公布其版本号

答案2

最新的 OpenSSH 版本允许通过 添加自定义文本VersionAddendum,但不允许删除产品名称/版本。您必须为此修补源代码。

相关内容