在 Rundeck 中 sudo - su anotheruser 后执行远程命令

在 Rundeck 中 sudo - su anotheruser 后执行远程命令

我是 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

相关内容