SSH проверки выполняются без какого-либо агента. Zabbix агент не требуется для проверок, выполняемых по SSH.
Для выполнения SSH проверок Zabbix сервер должен быть изначально сконфигурирован с поддержкой SSH2 (libssh2 или libssh). Смотрите также: Требования.
Начиная с RHEL 8, поддерживается только libssh. Для других дистрибутивов рекомендуется libssh вместо libssh2.
Проверки SSH предоставляют два метода аутентификации: пара логин пользователя/пароль и на основе файла ключа.
Если вы не собираетесь использовать ключи, то (помимо привязки библиотеки libssh2/libssh к Zabbix при компиляции из исходных кодов) никакой дополнительной настройки не требуется.
Чтобы для элементов данных SSH использовать аутентификацию по ключу, необходимо произвести некоторые изменения в конфигурации сервера.
Откройте файл конфигурации сервера Zabbix (zabbix_server.conf) из-под root
и найдите следующую строку:
Раскомментируйте её и укажите полный путь к папке, где размещены открытые и закрытые ключи (public and private keys):
Затем сохраните файл и перезапустите сервер Zabbix.
Здесь /home/zabbix — домашняя папка для учётной записи пользователя zabbix, а .ssh — папка внутри неё, куда по умолчанию с помощью команды ssh-keygen [en] будут сгенерированы открытые и закрытые ключи.
Обычно при установке сервера Zabbix из пакетов на разных дистрибутивах ОС создается аккаунт пользователя zabbix с домашней папкой в не очень стандартных местах, например, /var/lib/zabbix (как для системных аккаунтов).
До начала создания ключей рассмотрите вариант перемещения домашней папки в более известное место (интуитивно ожидаемое). Этот вариант будет соответствовать параметру SSHKeyLocation
конфигурации Zabbix сервера, упомянутому выше.
Эти шаги можно пропустить, если учётная запись zabbix добавлена вручную в соответствии с разделом установки, потому что в этом случае домашняя папка, скорее всего, уже расположена в /home/zabbix.
Для изменения этой настройки у учётной записи пользователя zabbix все работающие процессы, которые его используют, потребуется остановить:
Чтобы изменить местоположение домашней папки с попыткой переместить её (если папка существует), вы должны выполнить команду:
Вполне возможно, что домашняя папка не существует в старом месте, поэтому в новом месте её необходимо создать. Безопасная попытка, чтобы сделать это:
Чтобы быть уверенным, что всё безопасно, можно выполнить дополнительные команды для установки разрешений к домашней папке:
Теперь можно снова запустить ранее остановленные процессы:
Теперь шаги генерирования открытых и закрытых ключей можно выполнить следующими командами (для лучшей читабельности запросы команд закомментированы):
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
Zabbix сервера.
Утилитой ssh-keygen и сервером SSH могут поддерживаться ключи и других типов, нежели «rsa»; но они могут не поддерживаться используемой Zabbix библиотекой libssh2.
Этот шаг необходимо выполнить только один раз для каждого хоста, который будет наблюдаться с использованием SSH проверок.
При использовании следующей команды файл открытого ключа может быть установлен на удалённый хост 10.10.10.10, для того чтобы потом можно было выполнять SSH проверки при помощи аккаунта root (для лучшей читабельности подсказки команды закомментированы):
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:
<введите пароль пользователя root>
# Теперь попытайтесь зайти на машину с помощью "ssh '[email protected]'",
# и проверьте, чтобы убедиться, что мы не добавили лишние нежелательные ключи.
Теперь можно проверить вход по SSH с использованием закрытого ключа по умолчанию (/home/zabbix/.ssh/id_rsa) учётной записи пользователя zabbix:
sudo -u zabbix ssh [email protected]
Если вход успешен, то часть настройки в командной строке завершена и удалённую сессию по SSH можно закрыть.
Фактически выполняемые команда(ы) необходимо поместить в поле Выполняемый скрипт при настройке элемента данных. Можно выполнять несколько команд одну за другой, размещая каждую на новой строке. В этом случае возвращаемые значения также будут отформатированы как многострочные.
Все обязательные поля ввода отмечены красной звёздочкой.
Поля, которые требуют информацию, специфичную для элементов данных SSH:
Параметр | Описание | Комментарии |
---|---|---|
Тип (Type) | Здесь выберите SSH агент. | |
Ключ (Key) |
Уникальный (в пределах узла сети) ключ элемента данных в формате ssh.run[уникальное короткое описание,<ip>,<порт>,<кодировка>,<опции_ssh>] | уникальное короткое описание обязательно и должно быть уникальным у всех элементов данных типа SSH в рамках одного узла сети. По умолчанию порт 22, а не порт, указанный в интерфейсе узла сети, которому этот элемент данных назначен. опции_ssh позволяют передать дополнительные опции SSH в формате ключ1=значение1;ключ2=значение2,значение3. Несколько значений для одного ключа можно передать через запятую (в этом случае параметр должен быть заключён в кавычки); несколько ключей опций можно передать через разделитель «точка с запятой». Поддерживаются следующие ключи опций : 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) |
Один из «Пароль (Password)» или «Публичный ключ (Public key)» | |
Имя пользователя (User name) |
Имя пользователя (до 255 символов) для аутентификации на удалённом хосте. Требуется. | |
Файл публичного ключа (Public key file) |
Имя файла открытого ключа, если Метод аутентификации задан значением «Публичный ключ». Требуется. | Например: id_rsa.pub — имя по умолчанию файла открытого ключа, сгенерированного командой ssh-keygen [en] |
Файл приватного ключа (Private key file) |
Имя файла закрытого ключа, если Метод аутентификации задан значением «Публичный ключ». Требуется. | Например: id_rsa — имя по умолчанию файла закрытого ключа |
Пароль или Парольная фраза (Password или Key passphrase) |
Пароль (до 255 символов) для аутентификации или Парольная фраза, если она была использована для закрытого ключа |
Оставьте поле Парольная фраза пустым, если фраза не используется. Смотрите также известные проблемы касательно использования парольных фраз. |
Выполняемый скрипт (Executed script) |
Команда(-ы) оболочки, выполняемые с использованием удалённой сессии SSH | Значение, возвращаемое выполняемыми командами оболочки, ограничено 16 МБ (включая конечные пробелы, которые усекаются); также применяются ограничения базы данных. Обратите внимание, что библиотека libssh2 может усекать выполняемые скрипты до ~32 килобайт. Примеры: date +%s service status mysql-server ps auxww | grep httpd | wc -l |