it-swarm.com.de

Jenkins Sudo: Mit NOPASSWD sind keine tty vorhanden und kein askpass-Programm angegeben

Ich verbringe einige Tage damit, die Datei /etc/sudoers Einzurichten, um dem Benutzer jenkins Root-Berechtigungen zu erteilen. Ich habe Jenkins auf meinem Server installiert, weil ich mehrere Projekte mit symfony, ionic, neo4j usw. hoste. Das Problem ist, dass ich die Projekte nicht mit ionic einbauen kann. Ich bekomme folgenden Fehler: Sudo: no tty present and no askpass program specified. Dies ist der Inhalt meiner/etc/sudoers-Datei:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
jenkins ALL=(ALL) NOPASSWD: ALL
# Allow members of group Sudo to execute any command
%Sudo   ALL=(ALL:ALL) ALL
17
Ander Acosta

Ich habe die von @Jayan in den Kommentaren der Frage beschriebene Lösung getestet. Sie müssen die neue Zeile am Ende der Datei einfügen:

Lösung: https://stackoverflow.com/a/24648413/54506

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group Sudo to execute any command
%Sudo   ALL=(ALL:ALL) ALL
jenkins ALL=(ALL) NOPASSWD: ALL
29
Ander Acosta

Möglicherweise fügen Sie der sudoers-Datei einen falschen Benutzer hinzu. Das passierte auch mir und die Lösung, einen Eintrag in sudoers-Datei hinzuzufügen, funktionierte bei mir nicht. Sie müssen den tatsächlichen Benutzer kennen, mit dem Ihre Jenkins Befehle ausführen. Zu diesem Zweck können Sie einen Build-Schritt (Execute Shell) in Ihren Jenkins mit dem folgenden Befehl hinzufügen:

whoami

Führen Sie dann den Job jenkins erneut aus, und in der Konsolenausgabe wird der Benutzer angezeigt, mit dem jenkins Befehle ausführt. Sie müssen diesen Benutzer dann zu Ihrer sudoers-Datei hinzufügen. Wenn der Benutzer beispielsweise "Tomcat" war, fügen Sie die folgende Zeile am Ende Ihrer sudoers-Datei hinzu:

Tomcat ALL=(ALL) NOPASSWD: ALL

Ref: http://techrofile.com/jenkins-Sudo-no-tty-present-and-no-askpass-program-specified-with-nopasswd/

3
yasirfarooqui

Dies ist nur eine Antwort auf die Schritte zur Behebung des Problems.

Stellen Sie als erstes fest, mit welcher Benutzeroberfläche Jenkins das bash-Shell-Skript ausführt.

wählen Sie das Projekt> Konfigurieren> geben Sie whoami in die ausführbare Shell ein> Speichern und Jetzt erstellen. enter image description here Ergebnis im Buildverlauf anzeigen> Konsolenausgabe anklicken

Benutzer kann Tomcat oder Jenkins oder was auch immer sein.

SSH in Jenkins Server

  1. Sudo su
  2. visudo
  3. Tomcat ALL=(ALL) NOPASSWD: ALL #wenn der angezeigte Benutzer Tomcat ist enter image description here
0
wale