Опция клиента SSH для подавления баннеров сервера?

14

Я прочитал Остановить логин SSH от печати MOTD с клиента? Однако моя ситуация немного отличается:

  • Я хочу сохранить Banner / path / to / sometxt на стороне сервера
  • Я хотел бы передать опцию при определенных условиях, чтобы баннер не печатался (например ssh -o "PrintBanner=No" someserver).

Любая идея?

Сообщество
источник

Ответы:

-1

Ты не можешь (По крайней мере, не со стоковой OpenSSH)

Баннер сервера отправляется сервером до аутентификации. Смысл обычно состоит в том, чтобы содержать правовую оговорку или подобное сообщение типа «Если вы не авторизованы, отключите СЕЙЧАС» или другие важные вещи, которые вы не хотите, чтобы удаленный пользователь мог подавлять / игнорировать.

Если вы действительно хотите избавиться от этого, вам нужно будет взломать и скомпилировать собственную настроенную версию клиента SSH.

voretaq7
источник
15
Это старая информация, которая больше не распространяется на распространенные дистрибутивы. Ответы ниже, чтобы использовать либо -qили -o LogLevel=errorотлично работать сейчас :-)
Dogsbody
28

Есть LogLevelвариант:

Он заглушает баннер, но вы все равно можете получать ошибки:

$ ssh -o LogLevel=error localhost 
Permission denied (publickey).
user3640161
источник
Не работает с клиентом OpenSSH 6.9 - возможно, информация о версии будет полезна?
Зейн С. Халсолл,
Работает с OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3, OpenSSL 1.0.1f 6 января 2014 г.
Кульбир Сайни
6

Я проверил это, я думаю, вы можете использовать -qв команде ssh. Параметр -q означает « Тихий режим» . Это вызывает подавление большинства предупреждений и диагностических сообщений, например:

ssh -t '$node2' 'sudo cat xxx' |grep xxxxx" 2>/dev/null >/root/node2

или

ssh -t -q '$node2' 'sudo cat xxxx' |grep xxx" >/root/node2

Надеюсь, что это может помочь другим

gray13
источник
-q не работал с клиента Fedora 22 на Centos 6 и Suse 2.6 (клиент был OpenSSH 6.9. Может быть, этот ответ был бы отклонен, если бы он ссылался на конкретную версию ssh?
Zayne S Halsall
5

Обновите ~ / .ssh / config следующим, чтобы подавить баннер

Host *
    LogLevel error
Саши Кант
источник
Я считаю, что строка "Host *" является избыточной или неправильной. Во всяком случае, я получаю желаемый эффект без него. Вместе с тем следует отметить, что OP хотел получить эффект при определенных программных условиях, и в этом случае указанная выше опция командной строки является лучшим решением.
UncaAlby
4

Вы должны быть в состоянии установить другой Banner(ни один) внутри Matchблока.

Например:

Match Address 192.0.2.0/24
        Banner none

Но это должно быть сделано на стороне сервера , исходя из конкретных условий. Вы не можете сделать это со стороны клиента .

Майкл Хэмптон
источник
4

Похоже, вы ищете -q :

Бесшумный режим. Вызывает подавление большинства предупреждений и диагностических сообщений.

ssh user@host
*------------------------------------------------------------------------------*
| banner: blah                                                                 |
*------------------------------------------------------------------------------*
Last login: Mon Oct  2 16:40:01 2017 from ipAddress
$

С -q

ssh -q user@host
Last login: Mon Oct  2 16:40:30 2017 from ipAddress
$

Красиво и тихо Баннер все еще настроен, но вас это не беспокоит.

С другой стороны: не используйте баннеры. Лучше ничего не подтверждать и не опровергать. Это не поможет вам с людьми, о которых вы не беспокоились, а люди, о которых вы беспокоитесь, будут смеяться, работая над этим.;-)

todd_dsm
источник
0

Для меня это -o LogLevel=errorбыло лучше, чем -q, потому что последний подавляет важную информацию об ошибках (которую вы можете затем получить только через код выхода).

Сравните это (без вариантов): [root@myserver804 myuser1]# ssh targetserver1; echo "exit code=$?" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is SHA256:hvtR8Dl09aUeCeG2cT5EA8b+nbCOoV6h1DUON2vE63w. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending RSA key in /root/.ssh/known_hosts:1735 RSA host key for targetserver1 has changed and you have requested strict checking. Host key verification failed. exit code=255

с этим (тихо) [root@myserver804 myuser1]# ssh -q targetserver1; echo "exit code=$?" exit code=255

с этим (только ошибки журнала) [root@myserver804 myuser1]# ssh -o LogLevel=error targetserver1; echo "exit code=$?" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is SHA256:hvtR8Dl09aUeCeG2cT5EA8b+nbCOoV6h1DUON2vE63w. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending RSA key in /root/.ssh/known_hosts:1735 RSA host key for targetserver1 has changed and you have requested strict checking. Host key verification failed. exit code=255

Таким образом, вывод: если вы все еще заинтересованы в соответствующих ошибках, используйте -o LogLevel=error

Пик Мастер
источник
0

Ни -qили -oLogLevel=errorработы.

Что работает, чтобы подавить STDERR

ssh hostname command 2>/dev/null

Недостатком, однако, является то, что подавление STDERR применяется ко всей команде, а не только к программе SSH.

эфалид
источник
-2

Просто вызовите оболочку, которая должна подавить баннер.

ssh you@someplace.com /bin/bash

Обратите внимание, что, по крайней мере, для меня, мой $ PS1 не установлен, так что, похоже, он зависает. Мне пришлось набрать пару команд, чтобы убедиться, что это работает.

chrskly
источник
1
Это не будет подавлять баннеры, отображаемые Bannerопцией в /etc/sshd_config(по крайней мере, не во FreeBSD / OpenSSH_5.8p2)
voretaq7
Ах, я видел Motd в вопросе. Это научит меня правильно читать описание;)
chrskly
-2

Для меня -q сделал свое дело, и я все еще был в состоянии работать с выводом, сохраненным в файл.

ssh -q root @ server28 "ls -alF / dr_mksysb | egrep -v \" total | lost + found | ./ | ../ \ "| awk '{print \ $ NF}' | sed 's /.\$ // g '"> $ {basedir} /28.list

Zatarra
источник
Здорово, что это работает для вас. Тем не менее, это не отвечает на вопрос и должно быть максимум комментарием.
Джеральд Шнайдер
Это проблема, она отвечает на вопрос, я избавился от MOTD (баннер) У меня была точно такая же проблема, как указано в вопросе
Zatarra
Единственная часть вашего ответа, которая относится к вопросу, - это -qпараметр. Остальное совершенно не связано и полезно только для вас. Параметр уже был дан в качестве ответа, поэтому не стесняйтесь ставить его, если он вам помог, но этот «ответ» получит только отрицательные отзывы
Джеральд Шнайдер