Подавление ssh баннера от клиента OpenSSH

34

Я захожу на сервер, на котором установлен баннер ssh. Я хотел бы подавить это (особенно для неинтерактивного использования). У меня нет доступа к серверу sshd_config.

Лучшее решение, которое я нашел до сих пор, это установить LogLevel ERRORопцию на клиенте. Проблема в том, что это будет подавлять любые другие INFOсообщения уровня, которые я не хочу скрывать (ищите logitпримеры в OpenSSH ). Я мог бы также использовать, ssh -qно это подавит еще больше.

Есть ли другие, более конкретные решения?

Майкл Хоффман
источник

Ответы:

43

AFAIK, " ssh -q" или " LogLevel QUIET" ~/.ssh/config- это "традиционные" способы заставить баннер замолчать. Таким образом, у вас уже есть «лучший» компромисс с « LogLevel ERROR».

Более конкретным решением будет использование настраиваемой исправленной версии клиента ssh, если это вариант.

Паскаль Тивент
источник
2
Я думаю, что LogLevel ERRORтолько подавляет баннер в новых версиях OpenSSH. В старых версиях LogLevel QUIETили ssh -qобязательны.
Майкл Хоффман
3
Если -qне работает (это не для меня в Debian 7), вы можете использовать решение из другого вопроса: serverfault.com/a/764403/62024
Nux
1

Вы также можете использовать:

Banner none

на

/etc/ssh/sshd_config
Педро Лобито
источник
1
ОП указал «У меня нет доступа к серверу sshd_config», поэтому, к сожалению, это не отвечает на вопрос.
г-н Шунц
@MrShunz Вы правы, но я пришел на эту страницу в поисках Suppressing ssh banner from OpenSSH clientи этом ответе, хотя он не полностью отвечает на вопрос OP, он может помочь будущим пользователям.
Педро Лобито
0

Установите hexedit:

apt-get update && apt-get install hexedit

Сделайте резервную копию вашего двоичного файла sshd и создайте редактируемую рабочую копию (как root):

  cp -p /usr/sbin/sshd /tmp/sshd.backup
  cp -p /tmp/sshd.backup /tmp/sshd.new

Обновите двоичный файл с помощью hexedit:

hexedit /tmp/sshd.new

Нажмите TAB для переключения из HEX в область ASCII.

Используйте CTRL + S, чтобы вызвать запрос поиска и найти текст в вашем баннере, который вы хотите скрыть, например, «OpenSSH_7.4».

Вы должны увидеть что-то вроде:

0007DA54   61 67 65 6E  74 00 00 00  4F 70 65 6E  agent...Open
0007DA60   53 53 48 5F  37 2E 34 70  31 20 52 61  SSH_7.4p1 Ra
0007DA6C   73 70 62 69  61 6E 2D 31  30 2B 64 65  spbian-10+de
0007DA78   62 39 75 32  00 00 00 00  4F 70 65 6E  b9u2....Open

Используйте клавиши со стрелками, чтобы выделить начало строки, которую вы хотите обновить, и введите замену.

Будьте осторожны, чтобы не выходить за пределы длины оригинального баннера. Вы также можете нажать TAB, чтобы переключиться обратно в область HEX, если вы хотите просто обнулить строку, установив для каждого слова значение «00».

Ваше изменение должно выглядеть примерно так:

0007DA54   61 67 65 6E  74 00 00 00  48 65 72 65  agent...Here
0007DA60   20 62 65 20  64 72 61 67  6F 6E 73 2E   be dragons.
0007DA6C   20 54 75 72  6E 20 42 61  63 6B 00 00   Turn Back..
0007DA78   00 00 00 00  00 00 00 00  4F 70 65 6E  ........Open

Сохраните ваши изменения с помощью CTRL + x и Y.

Проверьте, есть ли экземпляры, которые мы пропустили (мы не ожидаем вывода сейчас):

strings /tmp/sshd.new | grep Rasp

Обновите sshd и перезапустите службу для хорошей меры:

rm /usr/sbin/sshd
cp -p /tmp/sshd.new /usr/sbin/sshd
systemctl restart ssh.service

Убедитесь, что вы все еще можете использовать SSH (в противном случае восстановите резервную копию или переустановите OpenSSH из диспетчера пакетов!):

ssh -vv user@ip

НОТА!!

Это изменение будет только временным, поскольку при каждом обновлении OpenSSH двоичный файл будет заменен.

Кокан
источник
2
Хотя это правда, что вопрос на самом деле не указывает на то, что у них нет доступа на запись sshd, это кажется довольно вероятным, поскольку он не указал никакого sshd_configдоступа. Они ищут клиентское решение.
Майк Скотт