Tengo una máquina de compilación que tiene un usuario abc
que 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 sudo
llamadas para las cuales no dice "sudo: no hay tty presente y no se ha especificado ningún programa Askpass". Pero cuando hice lo mismo con Jenkins en una máquina de compilación agregada como esclava, muestra "sudo: no hay tty presente y no se ha especificado ningún programa Askpass".
Encontré una solución que dice comentar Default requiretty
en el archivo /etc/sudoers
. Pero no tengo acceso a este archivo.
¿Cómo puedo superar este problema?
Respuesta1
Falla porque sudo
está intentando solicitar la contraseña de root y no hay ningún 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 de Jenkins pertenezca al admin
grupo (o wheel
).
Lo ideal (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
Respuesta2
Hay dos opciones: comentar la Defaults requiretty
configuración de /etc/sudoers como mencionaste o usar el -t
argumento de asignación pseudo-tty ( ) para ssh
.
Pruebe lo siguiente en su script jenkins:
ssh -t 127.0.0.1 "sudo command"
Aunque tendrá que tener ssh
claves previamente compartidas configuradas y ejecutarlas una vez manualmente para agregar una entrada a los hosts conocidos, como alternativa agregue el -o StrictHostKeyChecking=no
argumento to ssh
para ignorar esto.