Как задать пользовательскую строку ответа на 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, но не позволяют удалять имя/версию продукта. Для этого вам придется пропатчить исходный код.

Связанный контент