如何設定自訂 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

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

相關內容