9 Проверки через SSH
Обзор
SSH-проверки выполняются как мониторинг без использования агента. Для SSH-проверок Zabbix агент не требуется.
Для выполнения SSH-проверок Zabbix сервер должен быть предварительно настроен с поддержкой SSH2 (libssh или libssh2). См. также: Требования.
Начиная с RHEL 8, поддерживается только libssh. Для других дистрибутивов рекомендуется использовать libssh вместо libssh2.
Настройка
Аутентификация с парольной фразой
Проверки SSH предоставляют два метода аутентификации — пару имя пользователя/пароль и аутентификацию на основе файла ключа.
Если вы не собираетесь использовать ключи, никакая дополнительная настройка не требуется, кроме подключения libssh или libssh2 к Zabbix, если вы собираете его из исходного кода.
Аутентификация с помощью файлов ключей
Чтобы использовать аутентификацию на основе ключей для SSH-элементов данных, необходимо внести определённые изменения в конфигурацию сервера.
Откройте файл конфигурации сервера Zabbix
(zabbix_server.conf) от имени root
и найдите следующую строку:
# SSHKeyLocation=
Раскомментируйте её и укажите полный путь к каталогу, где будут находиться открытый и закрытый ключи:
SSHKeyLocation=/home/zabbix/.ssh
Сохраните файл и после этого перезапустите сервер Zabbix.
Путь /home/zabbix здесь является домашним каталогом учётной записи zabbix, а .ssh — это каталог, в котором по умолчанию будут сгенерированы открытый и закрытый ключи командой ssh-keygen внутри домашнего каталога.
Обычно установочные пакеты сервера Zabbix из различных дистрибутивов ОС создают учётную запись zabbix с домашним каталогом в другом месте, например, /var/lib/zabbix (как для системных учётных записей).
Перед генерацией ключей вы можете перенести домашний
каталог в /home/zabbix, чтобы он
соответствовал параметру конфигурации сервера Zabbix SSHKeyLocation,
упомянутому выше.
Следующие шаги можно пропустить, если учётная запись zabbix была добавлена вручную в соответствии с разделом установки. В таком случае домашний каталог для учётной записи 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
Теперь можно выполнить шаги по генерации открытого и закрытого ключей с помощью следующих команд (для лучшей читаемости приглашения командной строки закомментированы):
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,
что соответствует параметру конфигурации сервера Zabbix SSHKeyLocation.
Типы ключей, отличные от "rsa", могут поддерживаться утилитой ssh-keygen и SSH-серверами, но могут не поддерживаться библиотекой libssh2, используемой Zabbix.
Форма настройки shell
Этот шаг следует выполнить только один раз для каждого узла сети, который будет контролироваться с помощью SSH-проверок.
С помощью следующих команд файл публичного ключа можно установить на удалённый узел сети 10.10.10.10, чтобы SSH-проверки могли выполняться с учётной записью root (для лучшей читаемости приглашения командной строки закомментированы):
sudo -u zabbix ssh-copy-id [email protected]
# Подлинность узла сети '10.10.10.10 (10.10.10.10)' не может быть установлена.
# Отпечаток ключа RSA: 38:ba:f2:a4:b5:d9:8f:52:00:09:f7:1f:75:cc:0b:46.
# Вы уверены, что хотите продолжить подключение (yes/no)?
yes
# Предупреждение: '10.10.10.10' (RSA) навсегда добавлен в список известных узлов сети.
# Пароль [email protected]:
<Введите пароль root>
# Теперь попробуйте войти на машину с помощью "ssh '[email protected]'",
# и убедитесь, что были добавлены только те ключи, которые вы хотели.
Теперь можно проверить вход по SSH, используя приватный ключ по умолчанию (/home/zabbix/.ssh/id_rsa) для учётной записи пользователя zabbix:
sudo -u zabbix ssh [email protected]
Если вход выполнен успешно, значит часть настройки в shell завершена, и удалённый SSH-сеанс можно закрыть.
Настройка элемента данных
Фактические команды для выполнения необходимо указать в поле Выполняемый скрипт в настройках элемента данных. Несколько команд можно выполнять последовательно, размещая их каждую с новой строки. В этом случае возвращаемые значения также будут отформатированы как многострочные.

Все обязательные поля ввода отмечены красной звёздочкой.
Поля, требующие специальной информации для SSH-элементов данных:
| Параметр | Описание | Комментарии |
|---|---|---|
| Type | Выберите здесь SSH agent. | |
| Key | Уникальный (в пределах узла сети) ключ элемента данных в формате ssh.run[unique short description,<ip>,<port>,<encoding>,<ssh options>,<subsystem>] | unique short description является обязательным и должен быть уникальным для каждого SSH-элемента данных на узле сети. Порт по умолчанию — 22, а не порт, указанный в интерфейсе, которому назначен этот элемент данных. ssh options позволяют передавать дополнительные параметры SSH в формате key1=value1;key2=value2,value3. Несколько значений для одного ключа можно передавать через запятую (в этом случае параметр должен быть заключён в кавычки); несколько ключей параметров можно передавать через точку с запятой. Поддерживаются следующие ключи параметров: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs, PubkeyAcceptedKeyTypes. Поддержка ключей и значений параметров зависит от SSH-библиотеки (например, PubkeyAcceptedKeyTypes поддерживается только с libssh); если параметр не поддерживается, будет возвращена ошибка, и элемент данных станет неподдерживаемым.Обратите внимание, что знак "+" для добавления настроек шифров и "!" для отключения определённых настроек шифров (как в 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"]=> ssh.run[PubkeyAcceptedKeyTypes,127.0.0.1,,,PubkeyAcceptedKeyTypes=ssh-rsa]subsystem позволяет передавать подсистему SSH, ограничивая SSH-соединение определёнными операциями, разрешёнными этой подсистемой (например, передачей файлов через SFTP или управлением сетевыми устройствами через NETCONF). Обратите внимание, что использование подсистемы также может требовать применения специального синтаксиса скрипта в параметре Executed script. Примеры: => ssh.run[SFTPBackup,192.0.2.18,,,,sftp]=> ssh.run[Cisco1234,192.0.2.18,,,,netconf] |
| Authentication method | Один из вариантов: "Password" или "Public key". | |
| User name | Имя пользователя (до 255 символов) для аутентификации на удалённом узле сети. Обязательно. | |
| Public key file | Имя файла открытого ключа, если Authentication method — "Public key". Обязательно. | Пример: id_rsa.pub — имя файла открытого ключа по умолчанию, создаваемого командой ssh-keygen. |
| Private key file | Имя файла закрытого ключа, если Authentication method — "Public key". Обязательно. | Пример: id_rsa — имя файла закрытого ключа по умолчанию. |
| Password or Key passphrase |
Пароль (до 255 символов) для аутентификации или Парольная фраза, если она использовалась для закрытого ключа. |
Оставьте поле Key passphrase пустым, если парольная фраза не использовалась. См. также известные проблемы, связанные с использованием парольной фразы. |
| Executed script | Выполняемые команды оболочки с использованием удалённой SSH-сессии. | Возвращаемое значение выполняемых команд оболочки ограничено 16 МБ (включая конечные пробельные символы, которые усекаются); также применяются ограничения базы данных. Обратите внимание, что библиотека libssh2 может усекать исполняемые скрипты до \~32 КБ. Примеры: date +%ssystemctl status mysql-serverps auxww \| grep httpd \| wc -lПример (для подсистемы NETCONF): <rpc><get-software-information/></rpc>]]>]]><rpc><close-session/></rpc>]]>]]> |