- #9 Проверки через SSH
- Обзор
SSH проверки выполняются без какого-либо агента мониторинга. Zabbix агент не нужен для проверок выполняемых по SSH.
Для выполнения SSH проверок Zabbix сервер должен быть изначально настроен с поддержкой SSH2.
Минимально поддерживаемая версия библиотеки libssh2 есть 1.0.0.
- Настройка
- Настройка сервера
По умолчанию, Zabbix сервер не настроен для выполнения SSH проверок,
таким образом любые добавленные элементы данных не будут работать. Чтобы
изменить это, откройте файл конфигурации Zabbix сервера
(zabbix_server.conf) из под
root и найдите следующую строку:
# SSHKeyLocation=
Раскомментируйте её и укажите полный путь к папке, где размещены публичные и приватные ключи:
SSHKeyLocation=/home/zabbix/.ssh
Затем сохраните файл и перезапустите zabbix_server.
Здесь /home/zabbix домашняя папка для аккаунта zabbix пользователя и .ssh папка, куда будут по умолчанию сгенерированы с помощью команды ssh-keygen публичные и приватные ключи.
Обычно установленные пакеты zabbix-server в различных дистрибутивах ОС создают аккаунт zabbix пользователя с домашней папкой в не очень известных местах (как для системных аккаунтов). Например, для CentOS папка /var/lib/zabbix, для Debian она /var/run/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 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 сервера.
- Shell форма настройки
Этот шаг должен быть выполнен только один раз на каждом хосте, который будет мониториться с помощью 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]
Если вход успешен, то часть настройки в shell завершена и удаленное соединение по SSH можно закрыть.
- Настройка элемента данных
Действующая команда(ы) для выполнения должны быть размещены в поле
Выполняемый скрипт при настройке элемента данных.
Несколько команд могут быть выполнены одна за другой, путем размещения
их на новой строке. В этом случае возвращаемые значения также будет
отформатированы как многострочные.
| Параметр элемента данных | Описание | Комментарии |
|---|---|---|
| Ключ | Уникальный (в пределах узла сети) ключ элемента данных в формате ssh.run[<уникальное короткое описание>,<ip>,<порт>,<кодировка>] | <уникальное короткое описание> обязательно и должно быть уникальным для всех элементов данных типа SSH в рамках одного узла сети |
| Метод аутентификации | Один из "Пароль" или "Публичный ключ" | |
| Имя пользователя | Имя пользователя для аутентификации на удаленном хосте. Требуется |
|
| Файл публичного ключа | Имя файла публичного ключа если Метод аутентификации "Публичный ключ". Требуется | Пример: id_rsa.pub - по умолчанию имя файла публичного ключа сгенерированного командой ssh-keygen |
| Файл приватного ключа | Имя файла приватного ключа если Метод аутентификации "Публичный ключ". Требуется | Пример: id_rsa - имя файла приватного ключа |
| Пароль или Ключевая фраза |
Пароль для аутентификации или Ключевая фраза если она была использована для приватного ключа |
Оставьте поле Ключевая фраза пустым, если фраза не используется |
| Выполняемый скрипт | Выполняемые команды shell при использовании удаленной сессии SSH | Примеры: date +%s service mysql-server status ps aux | grep httpd | wc -l |
В результате элемент конфигурации должен выглядеть следующим образом:

Некоторые Linux дистрибутивы такие как Debian,
Ubuntu не поддерживают шифрованные приватные ключи (с ключевой фразой),
если библиотека libssh2 установлена из пакетов.
Для получения более подробных сведений смотрите отчет
ZBX-4850