是否可以修改建立原始连接时 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
- 可能不是协议所要求的,但我看不到一种无需重新编译就可以更改或删除它的方法。
目的是避免提供比协议正常工作所需的更多信息。
否。版本字符串在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 通告其版本号。
归档时间: |
|
查看次数: |
3558 次 |
最近记录: |