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

ccp*_*zza 3 ssh openssh sshd

是否可以修改建立原始连接时 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
Run Code Online (Sandbox Code Playgroud)

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

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

目的是避免提供比协议正常工作所需的更多信息。

Hex*_*Hex 6

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

#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 通告其版本号