是否可以修改 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
否。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
,但不允許刪除產品名稱/版本。您必須為此修補原始程式碼。