9 SSH检查

概述

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

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

从RHEL8/CentOS8开始只支持libssh.

配置

密码验证

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

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

密钥文件认证

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

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

  1. # SSHKeyLocation=

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

  1. SSHKeyLocation=/home/zabbix/.ssh

保存文件并重启 zabbix_server 服务。

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

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

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

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

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

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

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

  1. # usermod -m -d /home/zabbix zabbix

在旧版本中不存在zabbix根目录,需要手动创建,可以执行以下命令:

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

为了保证安全,可以执行以下命令以设置跟目录的权限:

  1. # chown zabbix:zabbix /home/zabbix
  2. # chmod 700 /home/zabbix

当前进程如果是停止的,可以立即启动:

  1. # service zabbix-agent start
  2. # service zabbix-server start

生成公钥和私钥的命令和步骤如下:

  1. # sudo -u zabbix ssh-keygen -t rsa
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/home/zabbix/.ssh/id_rsa):
  4. Created directory '/home/zabbix/.ssh'.
  5. Enter passphrase (empty for no passphrase):
  6. Enter same passphrase again:
  7. Your identification has been saved in /home/zabbix/.ssh/id_rsa.
  8. Your public key has been saved in /home/zabbix/.ssh/id_rsa.pub.
  9. The key fingerprint is:
  10. 90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 [email protected]
  11. The key's randomart image is:
  12. +--[ RSA 2048]----+
  13. | |
  14. | . |
  15. | o |
  16. | . o |
  17. |+ . S |
  18. |.+ o = |
  19. |E . * = |
  20. |=o . ..* . |
  21. |... oo.o+ |
  22. +-----------------+

注意: 公钥(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检查:

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

现在zabbix 用户可以使用默认私钥(/home/zabbix/.ssh/id_rsa) ,对目标主机进行SSH免密登录检查

  1. # sudo -u zabbix ssh [email protected]

如果登录成功,表示shell中的配置部分已经完成,可以关闭远程SSH会话。

监控项配置

要执行的命令必须放在监控项配置中的“执行的脚本”字段中。

通过将多个命令放在一行上,可以遍历执行多个命令。在这种情况下,返回的值也将被格式化为多行。

9 SSH检查 - 图1

所有必填字段都标有红色星号。

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
Key passphrase
验证密码或
Passphrase 如果它用于私钥
如果没有使用密码,则将 Key passphrase 字段留空
另请参阅 已知问题 关于密码短语的使用
执行的脚本使用 SSH 远程会话执行的 shell 命令示例:
date +%s
service mysql-server status
ps auxww | grep httpd | wc -l

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