Groundwork / Nagios 'check_by_ssh возвращает "Удаленное выполнение команды не удалось" - PullRequest
3 голосов
/ 22 июня 2011

Я использую Groundwork / Nagios и пытаюсь настроить check_by_ssh.В настоящий момент команда выглядит так:

$ USER1 $ / check_by_ssh -i ~ nagios / .ssh / id_dsa -H $ HOSTADDRESS $ -t 60 -l "$ USER24 $" -C "/ tmp/ test "

, где / tmp / test - программа Hello World.

, но она возвращает сообщение "Remote command execution failed:********************************************"

У меня настроены ssh-ключи дляnagios, чтобы войти в $HOSTADDRESS$ как $USER24$, но я все еще получаю сообщение об ошибке.(Закрытый ключ находится в ~ nagios / .ssh на базовом блоке, а открытый ключ находится в ~ / $ USER24 $ /. Ssh на удаленном хосте)

Таким образом, по сути, check_by_ssh не может запустить какой-либопрограмма.

Ответы [ 8 ]

13 голосов
/ 22 июня 2011

По какой-то причине добавление флага "-E" исправило это. Согласно справочной странице check_by_ssh , это флаг игнорирования STDERR. Теперь я получаю вывод из /tmp/test.

Окончательная команда:

$USER1$/check_by_ssh -i ~nagios/.ssh/id_dsa -H $HOSTADDRESS$

-t 60 -l "$ USER24 $" -C "/ tmp / test" -E

Окончательный вывод:

Hello World

7 голосов
/ 28 ноября 2012

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

/usr/lib/nagios/plugins/check_by_ssh -l nagios -o StrictHostKeyChecking=no
4 голосов
/ 03 марта 2015

Просто столкнулся с этим на некоторых моих системах.Я не мог понять это, но флаг -E помог.Причина, по которой это происходило на моих хостах, заключается в том, что я включил баннер SSH для отображения стандарта «Несанкционированное использование запрещено законом бла-бла-бла».Этот баннер отображается через stderr, и поэтому каждый из вызовов check_by_ssh завершается с ошибкой «Удаленное выполнение команды не удалось».

Так что, если ключи хоста не являются вашей проблемой, и вы не удовлетворены -E, отбросьте свой баннер,Если вы используете непротиворечивое имя пользователя для своих проверок Nagios, вы можете исключить пользователя nagios из отображения баннера, используя опцию Match в sshd_config:

https://unix.stackexchange.com/questions/96975/disable-ssh-banner-for-specific-users-or-ips

3 голосов
/ 07 августа 2012

Вы должны вручную выполнить команду в первый раз, потому что она задает вопрос, на который вы должны ответить «да».После этого он больше не требует взаимодействия.

Это необходимо сделать для каждого сервера, к которому вы подключаетесь.

2 голосов
/ 27 июня 2013

В моем случае ошибка произошла из-за обновления открытого ключа службы ssh, достигнутого nagios.

На компьютере мониторинга, на котором установлено nagios, обновите или удалите файл "/var/spool/nagios/.ssh/known_hosts", чтобы удалить весь открытый ключ.

и попробуйте снова check_by_ssh.

Пример:

# ./check_by_ssh -H target_machine -C "/bin/ls" 
Remote command execution failed: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# rm /var/spool/nagios/.ssh/known_hosts

#  ./check_by_ssh -H target_machine -C "/bin/ls /" 
bin
boot
cgroup
core
data
dev
etc
home
...
1 голос
/ 01 июня 2015

Я нашел ответ.

Чтобы пропустить баннер, добавьте файл "config" в каталог .ssh на сервере nagios

cat config LogLevel = QUIET

chmod 600 config

, после чего баннер будет пропущен, а проверка nagios будет работать без флага -E

С уважением, Богдан

0 голосов
/ 14 мая 2016

У меня была такая же проблема с check_by_ssh на Icinga 2.

Я исправил это, установив vars.by_ssh_quiet = "true" в объекте команды ( Ссылка на документ Icinga 2 ).

object CheckCommand "by_ssh_redis" {
  import "by_ssh"
  vars.by_ssh_command = [ "/usr/lib64/nagios/plugins/check_redis.pl", "-H", "localhost"]
  vars.by_ssh_quiet  = "true"
}
0 голосов
/ 22 июня 2011

Если вы настроили открытый ключ, вам нужно передать ключ в вашей команде SSH, например:

command_line    $USER1$/check_by_ssh -i /usr/local/nagios/etc/keys/$HOSTNAME$ -H $HOSTADDRESS$ -t 60 -l "$USER24$" -C "cd tmp"

Убедитесь, что у открытого ключа есть разрешение 0600.

...