カスタム 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が、製品名/バージョンを削除することはできません。そのためには、ソース コードにパッチを適用する必要があります。

関連情報