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

9 SSH检查

概述

SSH检查作为一种agent-less 监控,不依赖于Zabbix agent执行。

要执行SSH检查,Zabbix服务器必须首先配置 SSH2支持(libssh2或libssh)。参考:要求

从RHEL 8 开始只支持libssh.

配置

密码验证

SSH 检查提供两种身份验证方法,用户/密码对和基于密钥文件。

如果您正在构建从源码Zabbix,且不打算使用密钥文件,除了将 libssh2/libssh 链接到 Zabbix,无需额外配置。

密钥文件认证

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

使用root身份打开 Zabbix 服务器配置文件(zabbix_server.conf) 并查找以下行:

# SSHKeyLocation=

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

SSHKeyLocation=/home/zabbix/.ssh

保存文件并重启 zabbix_server 服务。

这里的 /home/zabbixzabbix 用户的家目录,.ssh是其中的一个目录。默认情况下,ssh-keygen命令生成的公钥和私钥将保存在这个目录中。

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

在生成秘钥前可以考虑指定密钥保存的路径到更常见的位置,该路径需要跟 zabbix server 配置中的 SSHKeyLocation 保持一致.

如果已经根据安装部分手动添加了zabbix账号,这些步骤可以跳过。因为在这种情况下,很可能主目录已经位于/home/zabbix

要更改 zabbix 用户的设置,必须先停止zabbix所有的进程:

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

要更改和移动一个已存在的目录应该执行以下命令:

# usermod -m -d /home/zabbix 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.pub)和私钥(id_rsa)默认生成在/home/zabbix/.ssh 路径下,该路径对应Zabbix server的SSHKeyLocation配置参数

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监控项需要特定信息的字段:

参数 说明 备注
类型 在此处选择SSH 客户端
Key 唯一(每个主机)监控项键,格式为 ssh.run[<unique short description>,<ip>,<port>,<encoding>] <unique short description> 是必需的并且对于每个主机的所有 SSH 监控项应该是唯一的
默认端口是 22,而不是在分配此监控项的接口中指定的端口
认证方式 “密码”或“公钥” 选一个
用户名 在远程主机上进行身份验证的用户名。
必填
公钥文件 如果 Authentication method 是“Public key”,则公钥的文件名。必需 示例:id_rsa.pub - 命令生成的默认公钥文件名 ssh-keygen
私钥文件 如果 Authentication method 是“Public key”,则私钥的文件名。必需 示例:id_rsa - 默认私钥文件名
Password or
密钥密码
验证密码或
Passphrase 如果它用于私钥
如果没有使用密码,则将 Key passphrase 字段留空
另请参阅 已知问题 关于密码短语的使用
执行的脚本 使用 SSH 远程会话执行的 shell 命令 示例:
date +%s
service mysql-server status
ps auxww | grep httpd | wc -l

libssh2 库可能会将可执行脚本截断为~32kB.