Llama a sudo desde Jenkins

8

Tengo una máquina de compilación que tiene un usuario abcque tiene acceso limitado a sudo. Cuando reviso el código fuente y ejecuto mi script de compilación, funciona bien. El script de compilación contiene sudollamadas para las cuales no dice "sudo: no hay ningún tty presente y ningún programa askpass especificado". Pero cuando hice lo mismo con Jenkins en una máquina de compilación agregada como esclava, muestra "sudo: no hay tty presente y ningún programa askpass especificado".

He encontrado una solución que dice comentar Default requirettyen el archivo /etc/sudoers. Pero no tengo acceso a este archivo.

¿Cómo puedo superar este problema?

Niraj
fuente
¿Se permite que este comando que intenta ejecutar se sudoejecute sin ingresar una contraseña? Si tiene que ingresar una contraseña, sudo requerirá un tty.
Patrick
Sí ... se ejecuta sin ingresar una contraseña
Niraj

Respuestas:

3

Hay dos opciones, comentar la Defaults requirettyconfiguración de / etc / sudoers como mencionaste o usar el -targumento pseudo-tty alloction ( ) para ssh.

Pruebe lo siguiente en su script jenkins:

ssh -t 127.0.0.1 "sudo command"

Aunque tendrá que tener sshclaves precompartidas configuradas para usted y ejecutarlas una vez manualmente para agregar una entrada a hosts conocidos, alternativamente agregue el -o StrictHostKeyChecking=noargumento sshpara ignorar esto.

geedoubleya
fuente
2

Falla porque sudoestá intentando solicitar la contraseña de root y no hay pseudo-tty asignado.

Debe iniciar sesión como root o configurar las siguientes reglas en su /etc/sudoers (o:) sudo visudo:

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

Luego, asegúrese de que su usuario Jenkins pertenezca al admingrupo (o wheel).

Idealmente (más seguro) sería limitar los privilegios de root solo a comandos específicos que se pueden especificar como %admin ALL=(ALL) NOPASSWD:/path/to/program

kenorb
fuente
2
Todavía requiere un TTY.
Carreras de ligereza en órbita
0

Si está ejecutando comandos a través de ssh, debe marcar la opción "Exec in pty". ingrese la descripción de la imagen aquí

Sanny Patel
fuente