这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

9 SSH检查

概述

SSH检查不依赖于Zabbix agent,可对无agent代理的设备进行监控。

要执行SSH检查,Zabbix服务器必须首先配置SSH2(libssh2 或 libssh)支持,也可参见需求文档

从RHEL/CentOS 8开始,只支持libssh。

配置

密码验证

SSH检查提供了两种身份验证方式,一种是用户/密码对,另一种是基于密钥文件的验证方式。

如果你不打算使用密钥,除了将libssh2连接到Zabbix,就不需要额外的配置了(如果是源码安装)。

密钥文件认证

要对SSH监控项使用基于密钥的身份验证,需要对服务器配置进行某些更改。

以root身份打开Zabbix server的配置文件,查找以下行

# SSHKeyLocation=

取消注释,配置公钥和私钥所在文件夹的完整路径:

SSHKeyLocation=/home/zabbix/.ssh

保存文件并重启zabbix_server服务

/home/zabbix 在这里是 zabbix 用户的主目录;.ssh是一个目录,由 ssh-keygen 这个命令产生的公钥和密钥将默认放到这个目录中。

不同发行版操作系统的zabbix-server安装程序,会在不太明显的地方(与系统账户一样)创建一个带有主目录的zabbix用户账户。例如,对于CentOS系统,在 /var/lib/zabbix 位置,而Debian系统则是在 /var/run/zabbix

在生成密钥之前,可以考虑将主目录重新分配到更熟悉的地方(更为直观),与上述提到的 Zabbix server配置中 SSHKeyLocation 的参数对应。

如果根据 安装章节 手动添加了zabbix账户,则这些步骤可以省略,因为在这种情况下,主目录很可能已经是位于 /home/zabbix

要更改 zabbix 账户的设置,必须停止所有正在使用它的进程:

# service zabbix-agent stop
       # service zabbix-server stop

要更改主目录的位置,以尝试移动它(如果存在),要执行一条命令:

# usermod -m -d /home/zabbix zabbix

在旧的地方不存在主目录是完全可能的,因此需要在新的地方创建。一个安全的做法是:

# test -d /home/zabbix || mkdir /home/zabbix

为确保一切都是安全的,可以执行其他命令来设置主目录的权限:

# chown zabbix:zabbix /home/zabbix
       # chmod 700 /home/zabbix

之前被停止的进程现在可以重新启动了:

# service zabbix-agent start
       # service zabbix-server start

现在,可以通过如下命令来生成公钥和私钥:

# sudo -u zabbix ssh-keygen -t rsa
       Generating public/private rsa key pair.
       Enter file in which to save the key (/home/zabbix/.ssh/id_rsa): 
       Created directory '/home/zabbix/.ssh'.
       Enter passphrase (empty for no passphrase): 
       Enter same passphrase again: 
       Your identification has been saved in /home/zabbix/.ssh/id_rsa.
       Your public key has been saved in /home/zabbix/.ssh/id_rsa.pub.
       The key fingerprint is:
       90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 zabbix@it0
       The key's randomart image is:
       +--[ RSA 2048]----+
       |                 |
       |       .         |
       |      o          |
       | .     o         |
       |+     . S        |
       |.+   o =         |
       |E .   * =        |
       |=o . ..* .       |
       |... oo.o+        |
       +-----------------+

请注意:在默认情况下,公钥和私钥(分别为 id_rsa.pubid_rsa )生成在 /home/zabbix/.ssh 目录,这与Zabbix server配置中 SSHKeyLocation 的参数是对应的。

<note important>ssh-keygen工具和SSH服务器除了“rsa”之外,也可支持其他密钥类型,但Zabbix使用的libssh2可能不支持它们。 :::

Shell配置方式

对于每台被SSH检测的主机,此步骤只需要执行一次。

通过使用以下命令,公钥 会安装到远程主机 10.10.10.10 上,以便可以使用 root 账户执行SSH检查:

# sudo -u zabbix ssh-copy-id [email protected]
       The authenticity of host '10.10.10.10 (10.10.10.10)' can't be established.
       RSA key fingerprint is 38:ba:f2:a4:b5:d9:8f:52:00:09:f7:1f:75:cc:0b:46.
       Are you sure you want to continue connecting (yes/no)? yes
       Warning: Permanently added '10.10.10.10' (RSA) to the list of known hosts.
       [email protected]'s password: 
       Now try logging into the machine, with "ssh '[email protected]'", and check in:
         .ssh/authorized_keys
       to make sure we haven't added extra keys that you weren't expecting.

现在可以使用 zabbix 用户的默认私钥 (/home/zabbix/.ssh/id_rsa) 检查SSH登陆了:

# sudo -u zabbix ssh [email protected]

如果登陆成功,那么Shell中的配置部分就完成了,并可以关闭远程SSH会话。

监控项配置

要执行的实际命令必须放在监控项配置的 执行脚本 中。
如要执行多条命令,在执行脚本字段中一行写一条,命令将会逐条执行。这种情况下,返回值也将为多行显示。

所有标有红色星号的为必填项。

需要为SSH监控项提供特定信息的字段是:

参数 描 注释
Type 在这里选择 SSH agent
Key 格式为 ssh.run[<unique short description>,<ip>,<port>,<encoding>] 每台主机唯一的监控项键值 <unique sho t description> 参数是必须的,对于每台主机的所有SSH监控项都应该是唯一的
默认端口为22, 而不是分配给该监控项的接口中指定的端口
Authentication method "密码"认证或者"公钥"认证,两者选其一
User name 在远程主机上进行身份验证的用户名
必填项
Public key file 如果 身份验证方式 为“公钥”,此处则为公钥的文件名。 必填项 示例: id_rsa.pub - 由 [ss -keygen](http://en.wikipedia.org/wiki/Ssh-keygen) 命令生成的默认公钥文件名
Private key file 如果 身份验证方式 为 “公钥”,此处则为私钥的文件名. 必填项 示例: id_rsa - 默认私钥文件名
Password or
Key passphrase
如果密码用于私钥,则验证密码或密码短语 如果没有使用密码短语,则将 *密码短 * 字段留空
关于密码短语的使用,另请参阅 已知问题
Executed script 使用SSH远程会话执行shell命令 示例:
<date +%s
service mysql-server status
ps auxww | grep httpd | wc -l

<note important>libssh2库可能会将可执行脚本截断到~32kB :::