1

我是 Rundeck 的新手,对它完全感到惊讶,我正在尝试执行一项工作,我的场景如下详述:

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

  • 在节点 Target 中,我想/app/acme/stopApp.sh使用 user执行脚本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

4

2 回答 2

4
sudo su - appmanager

尝试打开一个登录 shell,因此需要一个真正的终端。删除“-”以避免这种行为。最后,您的命令将如下所示

sudo su -c /app/acme/stopApp.sh appmanager
于 2012-12-12T20:53:37.650 回答
2

尽管您的 ssh 登录无需密码即可使用,但您还需要在 Target 服务器上配置 sudo 以便它不需要密码。

由于您只需要用户能够以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 手册页

于 2012-12-19T23:28:26.590 回答