Rufen Sie sudo von Jenkins aus auf

Rufen Sie sudo von Jenkins aus auf

Ich habe eine Build-Maschine mit einem Benutzer, abcder nur eingeschränkten Sudo-Zugriff hat. Wenn ich den Quellcode auschecke und mein Build-Skript ausführe, funktioniert es einwandfrei. Das Build-Skript enthält sudoAufrufe, für die nicht „sudo: kein TTY vorhanden und kein Askpass-Programm angegeben“ angezeigt wird. Aber als ich dasselbe mit Jenkins auf einer als Slave hinzugefügten Build-Maschine gemacht habe, wird „sudo: kein TTY vorhanden und kein Askpass-Programm angegeben“ angezeigt.

Default requirettyIch habe eine Lösung gefunden, die besagt, dass die Datei auskommentiert werden soll /etc/sudoers. Aber ich habe keinen Zugriff auf diese Datei.

Wie kann ich dieses Problem lösen?

Antwort1

Dies schlägt fehl, da sudoversucht wird, das Root-Passwort einzugeben, aber kein Pseudo-TTY zugewiesen ist.

/etc/sudoers Sie müssen sich entweder als Root anmelden oder die folgenden Regeln in Ihrem (oder :) einrichten sudo visudo:

# Members of the admin group may gain root privileges.
%admin  ALL=(ALL) NOPASSWD:ALL

Stellen Sie dann sicher, dass Ihr Jenkins-Benutzer zur adminGruppe (oder wheel) gehört.

Idealerweise (sicherer) wäre es, die Root-Rechte nur auf bestimmte Befehle zu beschränken, die wie folgt angegeben werden können:%admin ALL=(ALL) NOPASSWD:/path/to/program

Antwort2

Es gibt zwei Möglichkeiten: Kommentieren Sie die Defaults requirettyEinstellung aus /etc/sudoers aus, wie Sie erwähnt haben, oder verwenden Sie das -tArgument pseudo-tty allocation () für ssh.

Versuchen Sie Folgendes in Ihrem Jenkins-Skript:

ssh -t 127.0.0.1 "sudo command"

Sie müssen zwar sshfür sich selbst vorab freigegebene Schlüssel konfiguriert haben und diese einmal manuell ausführen, um einen Eintrag zu bekannten Hosts hinzuzufügen. Alternativ können Sie das -o StrictHostKeyChecking=noArgument hinzufügen, um sshdies zu ignorieren.

Antwort3

So geht's ganz einfach
Bildbeschreibung hier eingeben

$ sudo visudo
## Now add the below lines in your sudoers file :
jenkins ALL=(ALL) NOPASSWD: ALL

$service jenkins start

Antwort4

Wenn Sie Befehle über SSH ausführen, müssen Sie die Option „Execution in pty“ aktivieren. Bildbeschreibung hier eingeben

verwandte Informationen