在sudo上执行远程命令 - 在Rundeck中执行另一个用户

时间:2012-12-12 20:43:09

标签: sudo rundeck

我是Rundeck的新手并对此感到非常惊讶,我正在尝试执行一项工作,我的方案详情如下:

  • Rundeck在节点服务器(运行甲板服务器)和节点目标(远程Solaris主机)之间配置了ssh password password认证 对于用户" master"。

  • 在节点目标中,我想用用户/app/acme/stopApp.sh执行脚本appmanager

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

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

2 个答案:

答案 0 :(得分:4)

sudo su - appmanager

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

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

答案 1 :(得分:2)

虽然您的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 answer且密度更高sudoers man page