
我有一個詹金斯伺服器,它透過 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
只要是正確的用戶,就可以正常運作。