Опция SSH клиента для подавления баннеров сервера?
Я прочитал Остановить логин SSH от печати MOTD с клиента? Однако моя ситуация немного отличается:
- Я хочу оставить Banner /path/to/sometxt на стороне сервера
- Я хотел бы передать опцию при определенных условиях, чтобы баннер не печатался (например,
ssh -o "PrintBanner=No" someserver
).
Любая идея?
13 ответов
Ты не можешь (По крайней мере, не со стоковой OpenSSH)
Баннер сервера отправляется сервером до аутентификации. Смысл обычно состоит в том, чтобы содержать правовую оговорку или подобное сообщение типа "Если вы не авторизованы, отключите СЕЙЧАС" или другие важные вещи, которые вы не хотите, чтобы удаленный пользователь мог подавлять / игнорировать.
Если вы действительно хотите избавиться от этого, вам понадобится взломать и скомпилировать свою собственную версию SSH-клиента.
E сть LogLevel
опция:
Он заглушает баннер, но вы все равно можете получать ошибки:
$ ssh -o LogLevel=error localhost
Permission denied (publickey).
Я проверил это, я думаю, вы можете использовать -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
Надеюсь, что это может помочь другим
Обновите ~/.ssh/config следующим, чтобы подавить баннер
Host *
LogLevel error
Похоже, вы ищете -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
$
Красиво и тихо Баннер все еще настроен, но вас это не беспокоит.
С другой стороны: не используйте баннеры. Лучше ничего не подтверждать и не опровергать. Это не поможет вам с людьми, о которых вы не беспокоились, а люди, о которых вы беспокоитесь, будут смеяться, работая над этим. ;-)
Вы должны быть в состоянии установить другой Banner
(нет) внутри Match
блок.
Например:
Match Address 192.0.2.0/24
Banner none
Но это должно быть сделано на стороне сервера, исходя из конкретных условий. Вы не можете сделать это со стороны клиента.
Для меня, -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
На уровне пользователя вы можете подавить баннеры сервера, создав в каталоге $HOME пользователя (/home/username/) пустой файл с именем .hushlogin.
touch ~/.hushlogin
Хорошо, добавляю свое решение. Я обнаружил, что получаю разные результаты в зависимости от того, как я использую ssh.
ssh -q tgt true
No Banner
ssh -q tgt <<EOF
true
EOF
Banner
ssh -q tgt bash <<EOF
true
EOF
No Banner
Ни -q
или -oLogLevel=error
работает.
Что работает, чтобы подавить STDERR
ssh hostname command 2>/dev/null
Недостатком, однако, является то, что подавление STDERR применяется ко всей команде, а не только к программе SSH.
Пытаться:
ssh -q
мои ssh-соединения не получают баннерное сообщение.
Просто вызовите оболочку, которая должна подавить баннер.
ssh you@someplace.com /bin/bash
Обратите внимание, что, по крайней мере для меня, мой $PS1 не установлен, так что похоже, что он зависает. Мне пришлось набрать пару команд, чтобы убедиться, что это работает.
Для меня -q сделал свое дело, и я все еще был в состоянии работать с выводом, сохраненным в файл.
ssh -q root @ server28 "ls -alF / dr_mksysb | egrep -v \" total | lost + found |./ |../ \ "| awk '{print \ $ NF}' | sed 's /.\$ // g '"> $ {basedir} /28.list