我有一个詹金斯服务器,它通过 ssh 登录到我的生产服务器,并且应该使用 systemctl restart myservice.service 重新启动一些服务
我读过类似的问题,最常见的解决方案是:
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
并将其插入到 sudoers 文件中。
我还添加了
Defaults:jenkins !requiretty
我的部署文件是这样做的:
sudo /bin/systemctl restart myservice.service
然后尽管我努力了,我仍然收到以下错误:
sudo: no tty present and no askpass program specified
我读过有关在 ssh'ing 时使用 -t 的内容,但我不确定如何执行此操作,因为我执行了多个命令,而且有些命令不是 sudo 命令。
那么有人有一个好的解决方案让詹金斯重新启动我的服务吗?我想避免詹金斯使用 root 作为其主要用户。
编辑:
这是我这边的一个问题。我的 jenkins ssh 到另一台服务器并且没有以“jenkins”身份登录,因此我正在更改错误用户的权限。解决方案与
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
只要是正确的用户,就可以正常工作。