9 SSH检查

概述

SSH 检查是以 agent 无代理监控的方式执行的。SSH 检查不需要 Zabbix agent。

要执行 SSH 检查,Zabbix server 必须首先 4-配置源代码 编译支持 SSH2(libssh 或 libssh2)。另请参阅: serverproxy

从 RHEL 8 开始,仅支持 libssh。对于其他发行版,建议优先使用 libssh 而不是 libssh2。

配置

口令认证

SSH检查提供两种认证方法:用户名/密码对和 基于键值-file。

如果您不打算使用密钥,则无需进行额外配置。 必要时,在链接 libssh 或 libssh2 到 Zabbix 时,如果你正在构建 来自源。

密钥文件认证

要使用基于密钥的SSH 监控项认证,需对 需要配置服务器。

打开 Zabbix server 配置 file (zabbix_server.conf) 作为 root 并查找以下行:

# SSHKeyLocation=

取消注释并设置公钥和私钥所在文件夹的完整路径 将位于:

SSHKeyLocation=/home/zabbix/.ssh

保存file并随后重启Zabbix server。

此处路径 /home/zabbixzabbix 用户账户的主目录 而 .ssh 是默认存放公钥与私钥的目录 由ssh-keygen生成 主目录内的命令

通常来自不同操作系统的Zabbix server安装包 发行版create将zabbix用户账户的主目录配置在其他位置 例如,/var/lib/zabbix(适用于系统账户)。

在生成密钥之前,您可以重新分配主目录 将目录更改为 /home/zabbix,以便 对应 SSHKeyLocation Zabbix server 上述配置参数。

如果已手动添加 zabbix 账户,则可跳过以下步骤 根据installation section。 在这种情况下,zabbix 账户的主目录很可能已经存在 /home/zabbix

要更改 zabbix 用户账户的主目录,所有工作 使用它的进程必须停止:

systemctl stop zabbix-agent
       systemctl stop zabbix-server

要更改主目录位置并尝试移动它(如果存在) 应执行以下命令:

usermod -m -d /home/zabbix zabbix

也可能旧系统中不存在主目录。 位置,因此应在新的位置创建。安全尝试的方法是:

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

为确保一切安全,可以执行以下额外命令: 设置主目录的权限:

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

先前停止的进程现在可以重新启动:

systemctl start zabbix-agent
       systemctl start zabbix-server

现在,可以执行generate公钥和私钥的步骤 使用以下命令(为提升可读性,命令提示符已注释掉):

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):
       /home/zabbix/.ssh/id_rsa
       # Enter passphrase (empty for no passphrase):
       <Leave empty>
       # Enter same passphrase again: 
       <Leave empty>
       # 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 配置项 参数

除"rsa"外,可能还支持其他密钥类型 ssh-keygen工具与SSH服务器,但它们可能不受支持 Zabbix使用的libssh2库。

Shell 配置表单

此步骤只需为每个将通过SSH检查进行监控的主机执行一次。

通过使用以下命令,可以将公钥 file 安装到远程主机 主机 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:
       <Enter root password>
       # Now try logging into the machine, with "ssh '[email protected]'",
       # and check to make sure that only the key(s) you wanted were added.

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

sudo -u zabbix ssh [email protected]

如果 login 成功,则表示Shell中的配置部分已完成,可以关闭远程SSH会话。

监控项配置

实际要执行的命令必须放置在 监控项 配置的 执行脚本 字段中。 多个命令可以通过将它们放置在新行中依次执行。在这种情况下,返回值也将以多行格式呈现。

所有必填输入字段均以红色星号标记。

SSH 监控项 需要填写以下字段:

参数 描述 备注
Type 此处选择 SSH agent
Key 格式为 ssh.run[唯一简短描述,<ip>,<port>,<encoding>,<ssh options>] 的唯一(每个 主机 内)监控项 键。 唯一简短描述 是必填项,且在每个 主机 的 SSH 监控项 中必须唯一。

默认端口为 22,而不是此 监控项 所分配接口中指定的端口。

ssh options 允许以 key1=value1;key2=value2,value3 格式传递额外的 SSH 选项。一个键的多个值可以用逗号分隔(在这种情况下,参数必须为 参数引用字符串);多个选项键可以用分号分隔。

支持的选项键包括:KexAlgorithmsHostkeyAlgorithmsCiphersMACs。选项键和值的支持取决于 SSH 库;如果某个选项不被支持,将返回错误,且该 监控项 将变为不支持状态。

注意:GnuTLS 和 OpenSSL 中用于追加密码设置的 "+" 符号和禁用特定密码设置的 "!" 符号不受支持。

示例:
=> ssh.run[KexAlgorithms,127.0.0.1,,,Ciphers=aes128-ctr]
=> ssh.run[KexAlgorithms,,,,"KexAlgorithms=diffie-hellman-group1-sha1;HostkeyAlgorithms=ssh-rsa,ssh-dss,ecdh-sha2-nistp256"]
Authentication method “密码”或“公钥”之一。
User name 用于在远程 主机 上认证的用户名(最多 255 个字符)。必填。
Public key file 如果 认证方式 为“公钥”,则为公钥文件名。必填。 示例:id_rsa.pub - 由命令 ssh-keygen 生成的默认公钥 file 名称。
Private key file 如果 认证方式 为“公钥”,则为私钥文件名。必填。 示例:id_rsa - 默认私钥 file 名称。
Password or
Key passphrase
用于认证的密码(最多 255 个字符)或
如果私钥使用了口令短语,则为口令短语。
如果未使用口令短语,请将 密钥口令短语 字段留空。
另请参阅 ssh检查 了解口令短语的使用。
Executed script 通过 SSH 远程会话执行的 shell 命令。 执行的 shell 命令返回值限制为 16MB(包括被截断的尾随空格);也适用 文本数据限制

注意:libssh2 库可能会将可执行脚本截断为约 32KB。

示例:
date +%s
systemctl status mysql-server
ps auxww | grep httpd | wc -l