问题描述
|
我正在使用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\"
}