Проверки через SSH
SSH-проверки выполняются без какого-либо Агента. Агент не требуется для проверок, выполняемых по SSH.
Для выполнения SSH-проверок Сервер должен быть изначально сконфигурирован с поддержкой SSH2 (libssh2 или libssh).
Начиная с RHEL 8, поддерживается только libssh. Для других дистрибутивов вместо libssh2 предлагается libssh.
Проверки SSH предоставляют два метода аутентификации: пара логин пользователя/пароль и на основе файла ключа.
Если не требуется использовать ключи, то (помимо привязки библиотеки libssh2/libssh к Подсистеме при компиляции из исходных кодов) никакой дополнительной настройки не требуется.
Чтобы использовать для элементов данных SSH-аутентификацию по ключу, необходимо произвести некоторые изменения в конфигурации Сервера:
- открыть файл конфигурации Сервера zabbix_server.conf из-под
rootи найти следующую строку:
SSHKeyLocation=
- раскомментировать ее и указать полный путь к директории, в которой размещены открытые и закрытые ключи (public and private keys):
SSHKeyLocation=/home/zabbix/.ssh
где:
/home/zabbix– домашняя директория для учетной записи пользователя zabbix;.ssh– директория внутри нее, куда будут по умолчанию сгенерированы с помощью команды ssh-keygen открытые и закрытые ключи.
- сохранить файл и перезапустить Сервер.
Обычно при установке Сервера из пакетов на разных дистрибутивах ОС создается аккаунт пользователя zabbix с домашней директорией в других местах (не как для системных аккаунтов), например /var/lib/zabbix.
До начала создания ключей следует рассмотреть вариант перемещения домашней директории в обычное место (интуитивно ожидаемое). Этот вариант будет соответствовать упомянутому выше параметру SSHKeyLocation конфигурации Сервера.
Эти шаги можно пропустить, если учетная запись zabbix добавлена вручную в соответствии с разделом установки, потому что в этом случае домашняя директория, скорее всего, уже расположена в /home/zabbix.
Для изменения этой настройки у учетной записи пользователя zabbix все работающие процессы, которые его используют, потребуется остановить:
service zabbix-agent stop
service zabbix-server stop
Чтобы изменить местоположение домашней директории с попыткой переместить ее (если директория существует), нужно выполнить команду:
usermod -m -d /home/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):
/home/zabbix/.ssh/id_rsa
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, которая соответствует параметру конфигурации SSHKeyLocation Сервера.
Утилитой ssh-keygen и Сервером SSH могут поддерживаться ключи и других типов, кроме rsa; но они могут не поддерживаться используемой Подсистемой библиотекой libssh2.
Диалог настройки командной строки
Этот шаг необходимо выполнить только один раз для каждого хоста, который будет наблюдаться с использованием SSH-проверок.
При использовании следующей команды файл открытого ключа может быть установлен на удаленный хост 10.10.10.10, для того чтобы потом можно было выполнять SSH-проверки при помощи аккаунта root (для лучшей читабельности подсказки команды закомментированы):
sudo -u zabbix ssh-copy-id root@10.10.10.10
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.
root@10.10.10.10"s password:
<Введите пароль пользователя root>
Теперь попытайтесь зайти на машину с помощью "ssh "root@10.10.10.10"",
и проверьте, чтобы убедиться, что не добавили лишние нежелательные ключи.
Теперь можно проверить вход по SSH с использованием закрытого ключа по умолчанию (/home/zabbix/.ssh/id_rsa) учетной записи пользователя zabbix:
sudo -u zabbix ssh root@10.10.10.10
Если вход успешен, то часть настройки в командной строке завершена, и удаленную сессию по SSH можно закрыть.
Настройка элемента данных
Фактически выполняемые команды необходимо поместить в поле "Выполняемый скрипт" при настройке элемента данных. Можно выполнять несколько команд одну за другой, размещая каждую на новой строке. В этом случае возвращаемые значения также будут отформатированы как многострочные (рисунок 5).

Рисунок 5 — Поле "Выполняемый скрипт"
Поля, которые требуют специфичную информацию для SSH-элементов данных, описаны в таблице 81.
Проверки через Telnet
Telnet-проверки выполняются без наличия какого-либо Агента. Агент не требуется для проверок через Telnet.
Фактические команды для выполнения необходимо поместить в поле "Выполняемый скрипт" при настройке элемента данных. Можно выполнять несколько команд одну за другой, размещая каждую на новой строке. В этом случае значение результата также будет отформатировано как многострочное.
Поддерживаемые символы, которыми может заканчиваться строка приглашения командной оболочки: $, #, >, %.
Строка telnet с запросом, которая заканчивается одним из этих символов, будет удалена из возвращаемого значения, но только для первой команды из списка команд, то есть только в начале telnet-сессии. Выполнение команды на удаленном устройстве с использованием telnet-соединения:
telnet.run[<уникальное короткое описание>,<ip>,<порт>,<кодировка>]
Если telnet-проверка возвращает значение с символами не-ASCII и не в кодировке UTF8, то необходимо указать корректный параметр ключа <кодировка>.