
Ich habe einen Jenkins-Server, der sich per SSH bei meinem Produktionsserver anmeldet und einige Dienste mit systemctl restart myservice.service neu starten soll.
Ich habe von ähnlichen Problemen gelesen und die gängigste Lösung war diese:
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
und fügen Sie es in die Sudoers-Datei ein.
Ich habe auch hinzugefügt
Defaults:jenkins !requiretty
Meine Bereitstellungsdatei macht Folgendes:
sudo /bin/systemctl restart myservice.service
und dann erhalte ich trotz meiner Bemühungen immer noch die folgende Fehlermeldung:
sudo: no tty present and no askpass program specified
Ich habe gelesen, dass man beim SSH-Zugriff „-t“ verwenden kann, bin mir aber nicht sicher, wie ich das machen soll, da ich mehrere Befehle ausführe und einige davon keine Sudo-Befehle sind.
Hat also jemand eine gute Lösung, damit Jenkins meine Dienste neu starten kann? Ich möchte vermeiden, dass Jenkins Root als primären Benutzer verwendet.
Bearbeiten:
Dies war ein Problem auf meiner Seite. Mein Jenkins hat sich per SSH mit einem anderen Server verbunden und ist nicht als „Jenkins“ angemeldet, daher habe ich die Berechtigungen für den falschen Benutzer geändert. Die Lösung mit
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
funktioniert einwandfrei, solange es der richtige Benutzer ist.