SSH проверки выполняются без какого-либо агента. Zabbix агент не требуется для проверок, выполняемых по SSH.
Для выполнения SSH проверок Zabbix сервер должен быть изначально сконфигурирован с поддержкой SSH2 (libssh2 или libssh). Смотрите также: Требования.
Начиная с RHEL 8, поддерживается только libssh.
Проверки SSH предоставляют два метода аутентификации: пара логин пользователя/пароль и на основе файла ключа.
Если вы не собираетесь использовать ключи, то (помимо привязки библиотеки libssh2 / libssh к Zabbix при компиляции из исходных кодов) никакой дополнительной настройки не требуется.
Чтобы использовать для элементов данных SSH аутентификацию по ключу, необходимо произвести некоторые изменения в конфигурации сервера.
Откройте файл конфигурации Zabbix сервера (zabbix_server.conf) из под root
и найдите следующую строку:
Раскомментируйте её и укажите полный путь к папке, где размещены открытые и закрытые ключи (public and private keys):
Затем сохраните файл и перезапустите zabbix_server.
Здесь /home/zabbix - домашняя папка для учётной записи пользователя zabbix, а .ssh - папка внутри неё, куда будут по умолчанию сгенерированы с помощью команды ssh-keygen открытые и закрытые ключи.
Обычно при установке пакетов zabbix-server на разных дистрибутивах ОС создается аккаунт 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):
Created directory '/home/zabbix/.ssh'.
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:
Теперь попытайтесь зайти на машину с помощью "ssh '[email protected]'" и проверьте там:
.ssh/authorized_keys
чтобы убедиться, что мы не добавили лишние нежелательные ключи.
Теперь можно проверить вход по SSH с использованием закрытого ключа по умолчанию (/home/zabbix/.ssh/id_rsa) учётной записи пользователя zabbix:
# sudo -u zabbix ssh [email protected]
Если вход успешен, то часть настройки в командной строке завершена и удаленную сессию по SSH можно закрыть.
Фактически выполняемые команда(ы) необходимо поместить в поле Выполняемый скрипт при настройке элемента данных.
Можно выполнять несколько команд одну за другой, размещая каждую на новой строке. В этом случае возвращаемые значения также будет отформатированы как многострочные.
Все обязательные поля ввода отмечены красной звёздочкой.
Поля, которые требуют специфичную информацию для SSH элементов данных:
Параметр | Описание | Комментарии |
---|---|---|
Тип | Здесь выберите SSH агент. | |
Ключ | Уникальный (в пределах узла сети) ключ элемента данных в формате ssh.run[<уникальное короткое описание>,<ip>,<порт>,<кодировка>] | <уникальное короткое описание> обязательно и должно быть уникальным у всех элементов данных типа SSH в рамках одного узла сети. По умолчанию порт 22, а не порт, указанный в интерфейсе узла сети, которому этот элемент данных назначен |
Метод аутентификации | Один из "Пароль" или "Публичный ключ" | |
Имя пользователя | Имя пользователя для аутентификации на удаленном хосте. Требуется |
|
Файл публичного ключа | Имя файла открытого ключа, если Метод аутентификации задан значением "Публичный ключ". Требуется | Например: id_rsa.pub - имя файла по умолчанию открытого ключа, сгенерированного командой ssh-keygen |
Файл приватного ключа | Имя файла закрытого ключа, если Метод аутентификации задан значением "Публичный ключ". Требуется | Например: id_rsa - имя файла закрытого ключа |
Пароль или Парольная фраза |
Пароль для аутентификации или Парольная фраза, если ранее была использована фраза для закрытого ключа |
Оставьте поле Парольная фраза пустым, если фраза не используется Смотрите также известные проблемы касательно использования парольных фраз |
Выполняемый скрипт | Выполняемые команды командной строки с использованием удаленной сессии SSH | Например: date +%s service mysql-server status ps auxww | grep httpd | wc -l |
Библиотека libssh2 может обрезать выполняемые скрипты до ~32КБ.