Ich habe eine Build-Maschine mit einem Benutzer, abc
der 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 sudo
Aufrufe, 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 requiretty
in der Datei ein Kommentar abgegeben werden soll /etc/sudoers
. Ich habe jedoch keinen Zugriff auf diese Datei.
Wie kann ich dieses Problem lösen?
sudo
tty
not-root-user
jenkins
Niraj
quelle
quelle
sudo
möchten, ohne Eingabe eines Kennworts zulässig? Wenn Sie ein Passwort eingeben müssen, benötigt sudo ein tty.Antworten:
Es gibt zwei Möglichkeiten: Kommentieren Sie die
Defaults requiretty
Einstellung von / etc / sudoers wie erwähnt aus oder verwenden Sie das-t
Argument pseudo-tty assignation ( ) fürssh
.Versuchen Sie Folgendes in Ihrem Jenkins-Skript:
ssh -t 127.0.0.1 "sudo command"
Obwohl Sie
ssh
vorinstallierte 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=no
Argument hinzufügenssh
, um dies zu ignorieren.quelle
Es schlägt fehl, weil
sudo
versucht 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 :) einrichtensudo visudo
:Stellen Sie dann sicher, dass Ihr Jenkins-Benutzer zur
admin
Gruppe (oderwheel
) 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
quelle
Wenn Sie Befehle über ssh ausführen, müssen Sie die Option "Exec in pty" aktivieren.
quelle