11 SSH агент
Обзор
Проверки SSH выполняются как мониторинг без агента. Для проверок SSH агент Zabbix не требуется.
Для выполнения проверок SSH сервер Zabbix должен быть предварительно настроен с поддержкой SSH2 (libssh или libssh2). См. также: Требования.
Начиная с RHEL 8 поддерживается только libssh. Для других дистрибутивов рекомендуется использовать libssh вместо libssh2.
Настройка
Аутентификация по паролю
Проверки SSH предоставляют два метода аутентификации: пара логин пользователя/пароль и на основе файла ключа.
Если вы не собираетесь использовать ключи, то (помимо привязки библиотеки libssh2/libssh к Zabbix при компиляции из исходных кодов) никакой дополнительной настройки не требуется.
Аутентификация с помощью файла ключа
Чтобы использовать аутентификацию на основе ключа для элементов данных SSH, требуются определенные изменения в конфигурации сервера.
Откройте файл конфигурации сервера Zabbix
(zabbix_server.conf) от имени root
и найдите следующую строку:
# SSHKeyLocation=
Раскомментируйте ее и укажите полный путь к папке, где будут находиться открытый и закрытый ключи:
SSHKeyLocation=/home/zabbix/.ssh
Сохраните файл и затем перезапустите сервер Zabbix.
Путь /home/zabbix здесь — это домашний каталог учетной записи zabbix, а .ssh — это каталог, в котором по умолчанию будут сгенерированы открытый и закрытый ключи с помощью команды ssh-keygen внутри домашнего каталога.
Обычно пакеты установки сервера Zabbix из разных дистрибутивов ОС создают учетную запись zabbix с домашним каталогом в другом месте, например, /var/lib/zabbix (как для системных учетных записей).
Перед генерацией ключей вы можете переназначить домашний
каталог на /home/zabbix, чтобы он
соответствовал параметру конфигурации SSHKeyLocation сервера Zabbix,
упомянутому выше.
Следующие шаги можно пропустить, если учетная запись zabbix была добавлена вручную в соответствии с разделом установки. В таком случае домашний каталог учетной записи zabbix скорее всего уже /home/zabbix.
Чтобы изменить домашний каталог учетной записи zabbix, необходимо остановить все рабочие процессы, которые его используют:
systemctl stop zabbix-agent
systemctl stop zabbix-server
Чтобы изменить расположение домашнего каталога с попыткой перенести его (если он существует), следует выполнить следующую команду:
usermod -m -d /home/zabbix zabbix
Также возможно, что домашний каталог не существовал в старом расположении, поэтому его следует создать в новом месте. Безопасная попытка сделать это:
test -d /home/zabbix || mkdir /home/zabbix
Чтобы убедиться, что все защищено, можно выполнить дополнительные команды для установки прав доступа к домашнему каталогу:
chown zabbix:zabbix /home/zabbix
chmod 700 /home/zabbix
Ранее остановленные процессы теперь можно снова запустить:
systemctl start zabbix-agent
systemctl start zabbix-server
Теперь можно выполнить шаги по генерации открытого и закрытого ключей с помощью следующих команд (для удобства чтения приглашения командной строки опущены):
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):
<Leave empty>
# Enter same passphrase again:
<Leave empty>
# 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.
Типы ключей, отличные от "rsa", могут поддерживаться утилитой ssh-keygen и SSH-серверами, но могут не поддерживаться 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:
<введите пароль пользователя root>
# Теперь попытайтесь зайти на машину с помощью "ssh '[email protected]'",
# и проверьте, чтобы убедиться, что мы не добавили лишние нежелательные ключи.
Теперь можно проверить вход по SSH с использованием закрытого ключа по умолчанию (/home/zabbix/.ssh/id_rsa) учётной записи пользователя zabbix:
sudo -u zabbix ssh [email protected]
Если вход успешен, то часть настройки в командной строке завершена и удалённую сессию по SSH можно закрыть.
Конфигурация элемента данных
Фактические команды, которые необходимо выполнить, должны быть указаны в поле Executed script в конфигурации элемента данных. Несколько команд можно выполнять одну за другой, размещая их на новой строке. В этом случае возвращаемые значения также будут форматироваться как многострочные.

Все обязательные поля ввода отмечены красной звездочкой.
Поля, для которых для элементов данных SSH требуется конкретная информация:
| Parameter | Description | Comments |
|---|---|---|
| Type | Выберите здесь SSH agent. | |
| Key | Уникальный ключ элемента данных (для каждого узла сети) в формате ssh.run[unique short description,<ip>,<port>,<encoding>,<ssh options>,<subsystem>] | unique short description обязателен и должен быть уникальным для каждого элемента данных SSH на каждом узле сети. Порт по умолчанию — 22, а не порт, указанный в интерфейсе, к которому назначен этот элемент данных. ssh options позволяют передавать дополнительные параметры SSH в формате key1=value1;key2=value2,value3. Несколько значений для одного ключа можно передавать через запятую (в этом случае параметр должен быть в кавычках); несколько ключей параметров можно передавать через точку с запятой. Поддерживаются следующие ключи параметров: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs, PubkeyAcceptedKeyTypes. Поддержка ключа и значения зависит от библиотеки SSH (например, PubkeyAcceptedKeyTypes поддерживается только в libssh); если параметр не поддерживается, будет возвращена ошибка, и элемент данных станет неподдерживаемым.Обратите внимание, что знак "+" для добавления настроек шифров и "!" для отключения определенных настроек шифров (как в 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"]=> ssh.run[PubkeyAcceptedKeyTypes,127.0.0.1,,,PubkeyAcceptedKeyTypes=ssh-rsa]subsystem позволяет передать SSH-подсистему, ограничивая SSH-подключение конкретными операциями, разрешенными этой подсистемой (например, передачей файлов с помощью SFTP или управлением сетевым устройством с помощью NETCONF). Обратите внимание, что использование подсистемы может также потребовать применения определенного синтаксиса сценария в параметре Executed script. Примеры: => ssh.run[SFTPBackup,192.0.2.18,,,,sftp]=> ssh.run[Cisco1234,192.0.2.18,,,,netconf] |
| Authentication method | Один из вариантов: "Password" или "Public key". | |
| User name | Имя пользователя (до 255 символов) для аутентификации на удаленном узле сети. Обязательно. | |
| Public key file | Имя файла открытого ключа, если Authentication method — "Public key". Обязательно. | Пример: id_rsa.pub — имя файла открытого ключа по умолчанию, создаваемого командой ssh-keygen. |
| Private key file | Имя файла закрытого ключа, если Authentication method — "Public key". Обязательно. | Пример: id_rsa — имя файла закрытого ключа по умолчанию. |
| Password or Key passphrase |
Пароль (до 255 символов) для аутентификации или парольная фраза если она использовалась для закрытого ключа. |
Оставьте поле Key passphrase пустым, если парольная фраза не использовалась. См. также известные проблемы, связанные с использованием парольной фразы. |
| Executed script | Выполняемые команды оболочки через удаленный сеанс SSH. | Возвращаемое значение выполняемых команд оболочки ограничено 16 МБ (включая завершающие пробелы, которые обрезаются); также действуют ограничения базы данных. Обратите внимание, что библиотека libssh2 может обрезать исполняемые сценарии примерно до \~32 КБ. Примеры: date +%ssystemctl status mysql-serverps auxww \| grep httpd \| wc -lПример (для подсистемы NETCONF): <rpc><get-software-information/></rpc>]]>]]><rpc><close-session/></rpc>]]>]]> |