Rufen Sie sudo von Jenkins an


8

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" angegeben ist. Aber als ich dasselbe mit Jenkins auf einer Build-Maschine gemacht habe, die als Slave hinzugefügt wurde, wird "sudo: no tty present und no askpass program speced" angezeigt.

Ich habe eine Lösung gefunden, die besagt, dass Default requirettyin der Datei ein Kommentar abgegeben werden soll /etc/sudoers. Ich habe jedoch keinen Zugriff auf diese Datei.

Wie kann ich dieses Problem lösen?


Ist dieser Befehl, über den Sie ausführen sudomöchten, ohne Eingabe eines Kennworts zulässig? Wenn Sie ein Passwort eingeben müssen, benötigt sudo ein tty.
Patrick

Ja .. es läuft ohne Eingabe eines Passworts
Niraj

Antworten:


3

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

Versuchen Sie Folgendes in Ihrem Jenkins-Skript:

ssh -t 127.0.0.1 "sudo command"

Obwohl Sie sshvorinstallierte Schlüssel für sich selbst konfigurieren und einmal manuell ausführen müssen, um bekannten Hosts einen Eintrag hinzuzufügen, können Sie alternativ das -o StrictHostKeyChecking=noArgument hinzufügen ssh, um dies zu ignorieren.


2

Es schlägt fehl, weil sudoversucht wird, das Root-Passwort einzugeben, und keine Pseudo-Tty zugewiesen ist.

Sie müssen sich entweder als root anmelden oder die folgenden Regeln in Ihrem /etc/sudoers (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, Root-Berechtigungen nur auf bestimmte Befehle zu beschränken, die als angegeben werden können %admin ALL=(ALL) NOPASSWD:/path/to/program


2
Es erfordert immer noch ein TTY.
Leichtigkeitsrennen im Orbit

0

Wenn Sie Befehle über ssh ausführen, müssen Sie die Option "Exec in pty" aktivieren. Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.