我是 Rundeck 的新手,对它感到非常惊讶,我正在尝试执行一项工作,我的场景详述如下:
- Rundeck 配置了用户 master 在节点服务器(rundeck 服务器)和节点目标(远程 Solaris 主机)之间的 ssh 无密码身份验证,供用户“master”使用
- 在节点目标中我想
/app/acme/stopApp.sh
与用户一起执行脚本appmanager
通常和手动地,当我需要运行上面的脚本时,我会继续
ssh master@server sudo su - appmanager
或者简单地
ssh -t master@server 'sudo su - appmanager'
无需密码即可运行并最终运行(作为应用程序管理器)
/app/acme/stopApp.sh
但我不确定如何使用 Rundeck 重现这些步骤。我在之前的一些消息中看到,对于每个作业行,rundeck 都使用一个新的 ssh 连接,因此下面的工作流程对我来说总是失败并显示以下消息:
sudo: no tty present and no askpass program specified
Remote command failed with exit status 1
请有人能帮助我提供一些信息来解决这个问题。
如果没有这个功能,我就无法在我的部门引入 DevOps。
我阅读了用户指南和管理指南,但我找不到一个简单的示例,无论是在这个论坛中还是在论坛中。
答案1
由于我对 rundeck 一无所知,所以对我的建议持保留态度,但如果您收到no tty present
来自 sudo 的消息,则很可能是因为 sudoers 文件中的 NOPASSWORD 指令不允许使用 sudo 进入此帐户(无论您来自哪个帐户),并且它要求您输入密码。而且由于您正在建立无头连接(即 notty),因此在找不到读取此密码的地方后会失败。
扫描你的 sudoers 文件,看看是否可以找到与此 sudo/login 组合相关的行并使用它。
在不太可能的情况下,rundeck 可能会以某种方式覆盖 sudo,但我不会太依赖它。
答案2
问题可能是 /etc/sudoers 有“requiretty”... 这意味着您需要一个 tty 来运行 sudo 命令。一种解决方法是,通过在计算机上的 /etc/sudoers 中添加以下内容来删除特定用户的此要求:
Defaults:someuser !requiretty