讓詹金斯以root身份執行命令

讓詹金斯以root身份執行命令

我有一個詹金斯伺服器,它透過 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

只要是正確的用戶,就可以正常運作。

相關內容