Назад | Перейти на главную страницу

Zabbix ssh требует принудительного выделения псевдо-tty

В настоящее время я пытаюсь настроить элемент в zabbix для выполнения проверки на удаленном сервере через SSH. Когда я запускаю следующую команду в поле zabbix, она работает

sudo -u zabbix ssh -t root@[remote_ip] 'sudo ls'

Однако когда я запускаю это

sudo -u zabbix ssh root@[remote_ip] 'sudo ls'

я получил sudo: sorry, you must have a tty to run sudo. Я понимаю, это потому, что я не заставлял tty. Мой вопрос в том, как я могу получить «ключ» элемента zabbix ssh.run для принудительного включения tty? Желательно, чтобы мы не производили никаких обновлений на удаленном хосте.

Zabbix не поддерживает отправку параметров в ssh - потому что сервер Zabbix фактически не запускает двоичный файл ssh как таковой, а связан с библиотекой libssh2 и выполняет ssh-вызовы из процессов опроса zabbix_server на машине сервера Zabbix.

Я предполагаю, что вы могли бы отредактировать src / zabbix_server / poller / check_ssh.c, либо добавив параметр конфигурации «Force pseudo-tty allocation», либо просто принудительно включив его в код. Я бы посоветовал вам не использовать последнее, потому что вы в конечном итоге будете поддерживать вилку Zabbix для своих целей. Если вы решите сделать первое, вы можете применить патч к сообществу Zabbix, которое, вероятно, будет принято и поддерживаться разработчиками Zabbix в будущем.

Если вы не чувствуете себя комфортно или у вас недостаточно времени для этого, единственное чистое решение, которое осталось, - это настроить sudo на всех ваших ящиках "remote_ip" с помощью:

cat >> /etc/sudoers.d/zabbix_notty <<EOF
# Allow user zabbix to run sudo without tty
Defaults:zabbix !requiretty
EOF

Я знаю, ты сказал, что не предпочитаешь этого, но ...