在Rundeck中的su其他用户之后执行远程命令



我是Rundeck的新手,对它感到非常惊讶,我正在尝试执行一项作业,我的场景详细如下:

  • Rundeck在节点服务器(Rundeck服务器)和节点目标(远程Solaris主机)之间配置了ssh无密码身份验证用户"master"。

  • 在节点Target中,我想与用户appmanager一起执行脚本/app/acme/stopApp.sh

  • 通常,当我需要运行上面的脚本时,我会手动进行:

ssh master@server

sudo su - appmanager

或简称

ssh -t master@server
sudo su - appmanager

无需密码即可工作,并最终运行(作为appmanager)

/app/acme/stopApp.sh

但我不知道如何使用Rundeck重现这些步骤。我以前读过对于每个作业行rundeck使用新ssh连接的消息,因此工作流如下对我来说总是失败的消息:

sudo:没有tty,也没有指定askpass程序远程命令失败,退出状态为1

有人能帮我解决这个问题吗?

如果没有这个功能,我就无法引入一点DevOps在我的部门-D

我阅读了用户指南和管理指南,但找不到一个简单的例子,无论是在这个论坛上,都不能跟随。

我会感谢你的帮助。

Rundeck版本为1.4

sudo su - appmanager

尝试打开一个登录shell,因此想要一个真正的终端。删除"-"以避免这种行为。最后,你的命令看起来像

sudo su -c /app/acme/stopApp.sh appmanager

虽然ssh登录不需要密码,但您还需要在目标服务器上配置sudo,这样它就不需要密码。

由于您只需要master用户能够以appmanager的用户身份运行命令,因此您可以完全通过sudo来处理此问题。在目标上的/etc/sudoers中,添加:

master  ALL=(appmanager) NOPASSWD: ALL

然后您的ssh命令变为:

ssh -t master@server 'sudo -u appmanager /app/acme/stopApp.sh'

如果您需要通常由appmanager登录shell处理的环境设置,则需要显式地获取该设置。(我认为部署环境设置无论如何都不应该局限于登录shell。)

关于如何让一个用户像另一个用户一样运行命令的更多详细信息,请参阅ServerFault答案和更密集的sudoers手册页。

最新更新