Zabbix ssh 需要强制分配伪 tty

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 项目“key”强制 tty?最好不要对远程主机进行任何更新。

答案1

Zabbix 不支持向 ssh 发送参数 - 因为 Zabbix 服务器实际上并不运行“ssh”二进制文件,而是与 libssh2 库链接,并且在 Zabbix 服务器机器上从 zabbix_server 轮询器进程执行 ssh 调用。

我推测您可以编辑 src/zabbix_server/poller/checks_ssh.c,要么添加“强制伪终端分配”配置参数,要么直接在代码中强制执行。我建议您不要选择后者,因为您最终会为自己的目的维护 Zabbix fork。如果您决定选择前者,您可以将补丁应用于 Zabbix 社区,该补丁将来可能会被 Zabbix 开发人员接受和维护。

如果你觉得不方便或者没有足够的时间去做这件事,那么剩下的唯一干净的解决方案就是在所有“remote_ip”框上配置 sudo:

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

我知道你说过你不喜欢那样,但是......

相关内容