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.
Форма настройки 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:
<Enter root password>
# Now try logging into the machine, with "ssh '[email protected]'",
# and check to make sure that only the key(s) you wanted were added.
Теперь можно проверить вход по SSH, используя ключ по умолчанию
(/home/zabbix/.ssh/id_rsa) для учетной записи пользователя zabbix:
sudo -u zabbix ssh [email protected]
Если вход выполнен успешно, настройка shell завершена, и удаленный сеанс SSH можно закрыть.
Конфигурация элемента данных
Фактические команды, которые необходимо выполнить, должны быть указаны в поле Выполняемый скрипт в конфигурации элемента данных. Несколько команд можно выполнять одну за другой, размещая их на новой строке. В этом случае возвращаемые значения также будут отформатированы как многострочные.

Все обязательные поля ввода отмечены красной звездочкой.
Поля, для которых требуется определенная информация для элементов данных 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). Обратите внимание, что использование подсистемы также может потребовать применения определенного синтаксиса скрипта в параметре Выполняемый скрипт. Примеры: => 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 | Выполняемые команды shell через удаленный сеанс SSH. | Возвращаемое значение выполняемой команды shell ограничено 16 МБ (включая завершающие пробельные символы, которые усекаются); также действуют ограничения базы данных. Обратите внимание, что библиотека libssh2 может усекать исполняемые скрипты примерно до \~32 КБ. Примеры: date +%ssystemctl status mysql-serverps auxww \| grep httpd \| wc -lПример (для подсистемы NETCONF): <rpc><get-software-information/></rpc>]]>]]><rpc><close-session/></rpc>]]>]]> |