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
并查找以下行:
取消注释并设置公钥和私钥所在文件夹的完整路径 将位于:
保存file并随后重启Zabbix server。
此处路径 /home/zabbix 是 zabbix 用户账户的主目录 而 .ssh 是默认存放公钥与私钥的目录 由ssh-keygen生成 主目录内的命令
通常来自不同操作系统的Zabbix server安装包 发行版create将zabbix用户账户的主目录配置在其他位置 例如,/var/lib/zabbix(适用于系统账户)。
在生成密钥之前,您可以重新分配主目录 将目录更改为 /home/zabbix,以便 对应 SSHKeyLocation
Zabbix server 上述配置参数。
如果已手动添加 zabbix 账户,则可跳过以下步骤 根据installation section。 在这种情况下,zabbix 账户的主目录很可能已经存在 /home/zabbix
要更改 zabbix 用户账户的主目录,所有工作 使用它的进程必须停止:
要更改主目录位置并尝试移动它(如果存在) 应执行以下命令:
也可能旧系统中不存在主目录。 位置,因此应在新的位置创建。安全尝试的方法是:
为确保一切安全,可以执行以下额外命令: 设置主目录的权限:
先前停止的进程现在可以重新启动:
现在,可以执行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.pub 和 id_rsa) 默认情况下,这些文件已在 /home/zabbix/.ssh 目录中生成, 对应 Zabbix server SSHKeyLocation
配置项 参数
除"rsa"外,可能还支持其他密钥类型 ssh-keygen工具与SSH服务器,但它们可能不受支持 Zabbix使用的libssh2库。
此步骤只需为每个将通过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 选项。一个键的多个值可以用逗号分隔(在这种情况下,参数必须为 参数引用字符串);多个选项键可以用分号分隔。 支持的选项键包括: KexAlgorithms 、HostkeyAlgorithms 、Ciphers 、MACs 。选项键和值的支持取决于 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 |