从詹金斯调用 sudo

Nir*_*raj 8 sudo tty not-root-user jenkins

我有一台构建机器,它的用户abc具有有限的 sudo 访问权限。当我查看源代码并运行我的构建脚本时,它工作正常。构建脚本包含的sudo调用没有说“sudo: no tty present and no askpass program specified”。但是当我在添加为奴隶的构建机器上对 Jenkins 做同样的事情时,它显示“sudo:没有 tty 存在并且没有指定 askpass 程序”。

我找到了一种解决方案,说要Default requiretty在文件中注释掉/etc/sudoers。但我无权访问此文件。

我怎样才能克服这个问题?

gee*_*eya 3

有两个选项,如您提到的那样注释掉Defaults requiretty/etc/sudoers 中的设置,或者使用伪 tty 分配 ( -t) 参数ssh

在您的詹金斯脚本中尝试以下操作:

ssh -t 127.0.0.1 "sudo command"

尽管您必须ssh为自己配置预共享密钥并手动运行一次以将条目添加到已知主机,但也可以添加参数-o StrictHostKeyChecking=nossh忽略这一点。