命令在我需要监控的主机上运行(其 IP 在这里表示为 $HOSTADDRESS$):
[root@host ~]# /usr/local/nagios/libexec/check_ssh localhost
SSH OK - OpenSSH_4.3 (protocol 2.0)
然而,在 Nagios 服务器上,它不会:
root@server:~# /usr/lib/nagios/plugins/check_ssh -H $HOSTADDRESS$
Server answer:
我可以看到端口是开放的:
root@server:~# /usr/lib/nagios/plugins/check_tcp -H $HOSTADDRESS$ -p 22
TCP OK - 0.123 second response time on port 22|time=0.123277s;;;0.000000;10.000000
我可以通过 telnet 进行验证:
root@server:/etc/nagios3/conf.d# telnet $HOSTADDRESS$ 22
Trying $HOSTADDRESS$...
Connected to $HOSTADDRESS$.
Escape character is '^]'.
在网上搜索了两个小时并尝试了不同的建议后,我还是没有主意。我还有其他几家主机具有类似的设置,但它们没有这个问题。我比较了配置,它们看起来一样(我认为)。
我显然在这里遗漏了一些东西。
答案1
我在检查安装在 Windows 上的 OpenSSH 服务器(KpyM Telnet/SSH 服务器)时遇到了同样的问题,并且我正在使用 Nagios Linux 服务器上的 check_ssh 检查端口。
使用“ ”,我在端口 22 上check_ssh
通过“ ”获得了答案“服务器答案” :check_tcp
SSH OK
在Windows上的SSH服务器的日志中,nagios服务器的IP在被禁止的IP之中。
我删除了被禁止的 IP 中的 IP,现在 check_ssh 可以正常使用了:
check_ssh
答案是:SSH OK - cryptlib (protocol 2.0)
也许有帮助。可能不是同一款软件,但行为可能相同。
答案2
您是否已经在 Nagios 服务器和您尝试检查的服务器之间设置了无密码 SSH?
需要进行设置,因为无法提示输入密码。您可以通过连接到 nagios 服务器并尝试以 nagios 用户身份通过 SSH 连接到您要检查的服务器来检查这一点,看看它是否提示您输入密码。
而且 telnet 不是 ssh,它是一种完全不同的协议!