Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

9 Проверки через SSH

Обзор

SSH проверки выполняются без какого-либо агента. Zabbix агент не требуется для проверок выполняемых по SSH.

Для выполнения SSH проверок Zabbix сервер должен быть изначально сконфигурирован с поддержкой SSH2 (libssh2 или libssh). Смотрите также: Требования.

Начиная с RHEL/CentOS 8 поддерживается только libssh.

Настройка

Аутентификация парольной фразой

Проверки SSH предоставляют два метода аутентификации, пара логин пользователя/пароль и на основе ключа-файла.

Если вы не собираетесь использовать ключ, то никакой дополнительной настройки не требуется, при компиляции из исходных кодов, необходима также привязка библиотеки libssh2 / libssh к Zabbix.

Аутентификация на базе ключа

Для использования элементов данных SSH на основе аутентификации по ключу необходимо произвести некоторые изменения в конфигурации сервера.

Откройте файл конфигурации Zabbix сервера (zabbix_server.conf) из под root и найдите следующую строку:

# SSHKeyLocation=

Раскомментируйте её и укажите полный путь к папке, где размещены публичные и приватные ключи:

SSHKeyLocation=/home/zabbix/.ssh

Затем сохраните файл и перезапустите zabbix_server.

Где /home/zabbix домашняя папка для аккаунта zabbix пользователя и .ssh папка, куда будут по умолчанию сгенерированы с помощью команды ssh-keygen публичные и приватные ключи.

Обычно при установке пакетов zabbix-server на разных дистрибутивах ОС создается аккаунт zabbix пользователя с домашней папкой в не очень известных местах (как для системных аккаунтов), например, /var/lib/zabbix.

До начала создания ключей, рассмотрите вариант перемещения домашней папки в более известное место (интуитивно ожидаемое). Этот вариант будет соответствовать параметру SSHKeyLocation конфигурации Zabbix сервера, упомянутого выше.

Эти шаги можно пропустить, если аккаунт zabbix добавлен вручную в соответствии с разделом установки, потому что в этом случае домашняя папка, скорее всего, уже расположена в /home/zabbix.

Для изменения этой настройки у аккаунта zabbix пользователя все работающие процессы, которые его используют потребуется остановить:

# service zabbix-agent stop
       # service zabbix-server stop

Чтобы изменить местоположение домашней папки с попыткой переместить её (если папка существует), вы должны выполнить команду:

# usermod -m -d /home/zabbix zabbix

Вполне возможно, что домашняя папка не существует в старом месте (в CentOS, например), поэтому её необходимо создать в новом месте. Безопасная попытка, чтобы сделать это:

# 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): 
       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 [email protected]
       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 сервера.

Можно использовать ключи других типов кроме "rsa", если поддерживаются утилитой ssh-keygen и библиотекой libssh2, используемой Zabbix.

Диалог настройки командной строки

Этот шаг необходимо выполнить только один раз для каждого хоста, который будет наблюдаться с использованием 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КБ.