Groundwork / Nagios的check_by_ssh返回“远程命令执行失败”

| 我正在使用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:********************************************\"
我为gios设置了ssh密钥,以
$USER24$
的身份登录
$HOSTADDRESS$
,但是我仍然遇到错误。 (私钥位于基础工作箱上的〜nagios / .ssh中,而公钥位于远程主机上的〜/ $ USER24 $ /。ssh中) 因此,基本上,check_by_ssh无法运行任何程序。     
已邀请:
        由于某种原因,添加\“-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 最终输出:   你好,世界     
        如果
check_by_ssh
因要求验证密钥真实性而失败,则可以像使用ssh客户端一样在
check_by_ssh
选项中禁用严格的主机密钥检查。这是一个小的安全牺牲,但是如果您在受信任的专用网络上,则可以忽略不计,并且即使在第一次尝试时,也不必验证自己是否希望继续连接:
/usr/lib/nagios/plugins/check_by_ssh -l nagios -o StrictHostKeyChecking=no
    
        只是在我的某些系统上遇到了这个问题。我无法弄清楚,但-E标志确实有帮助。我的主机上发生这种情况的原因是,我启用了一个SSH标语来显示标准的“法律禁止未经授权的使用blah-blah-blah”。该标语通过stderr显示,因此每个check_by_ssh调用都失败,并带有“远程命令执行失败”。 因此,如果主机密钥不是您的问题,并且您对-E不满意,请放下您的横幅。如果您对Nagios检查使用一致的用户名,则可以使用sshd_config中的Match选项将nagios用户排除在显示横幅之外: https://unix.stackexchange.com/questions/96975/disable-ssh-banner-for-specific-users-or-ips     
        您必须在第一次时手动运行该命令,因为它会询问您必须回答是的问题。之后,它不再需要交互。 您必须为连接到的每个服务器执行此操作。     
        在我的情况下,该错误是由于nagios达到了ssh服务的公钥更新。 在安装了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
...
    
        我找到了答案。 为了跳过横幅,请在nagios服务器上的.ssh目录中添加文件\“ config \” 猫配置 LogLevel =安静 chmod 600配置 之后,横幅将被跳过,nagios检查将在没有-E标志的情况下工作 问候 博格丹     
        如果设置了公共密钥,则必须在
SSH
命令中传递密钥,例如:
command_line    $USER1$/check_by_ssh -i /usr/local/nagios/etc/keys/$HOSTNAME$ -H $HOSTADDRESS$ -t 60 -l \"$USER24$\" -C \"cd tmp\"
确保公钥具有“ 10”权限。     
        我在Icinga 2上的check_by_ssh遇到了相同的问题。 我通过在命令对象(Icinga 2 doc链接)中设置vars.by_ssh_quiet = \“ true \”来修复它。
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\"
}
    

要回复问题请先登录注册