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

9.1 Обзор

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

Для выполнения SSH проверок Zabbix сервер должен быть изначально настроен с поддержкой SSH2.

Минимально поддерживаемая версия библиотеки libssh2 есть 1.0.0.

9.2 Настройка

9.2.1 Настройка сервера

По умолчанию, 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 сервера.

9.2.2 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 можно закрыть.

9.2.3 Настройка элемента данных

Действующая команда(ы) для выполнения должны быть размещены в поле Выполняемый скрипт при настройке элемента данных.
Несколько команд могут быть выполнены одна за другой, путем размещения их на новой строке. В этом случае возвращаемые значения также будет отформатированы как многострочные.

Параметр элемента данных Описание Комментарии
Ключ Уникальный (в пределах узла сети) ключ элемента данных в формате 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