我是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
答案 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。