Corregido: sudo: no hay tty presente y no se ha especificado ningún programa askpass



Pruebe Nuestro Instrumento Para Eliminar Los Problemas

La línea de salida especificada del programa no tty present y no askpass es uno de esos mensajes de error ssh que realmente no es tan útil porque realmente no llega al punto de la causa del problema. Lo más probable es que esté trabajando con un TTY válido de algún tipo cuando vea el mensaje y probablemente haya tenido que lidiar con ingresar su contraseña de sudo a través de ssh sin problemas. Es más que probable que esté lidiando con un error de sintaxis, pero el mensaje no trata directamente este hecho.



Dado que este es un problema asociado con ssh en sí mismo, es muy probable que pueda reproducir el problema en Linux, FreeBSD, macOS y los servicios Unix de Cygwin en Microsoft Windows. Afortunadamente, la solución debería ser prácticamente la misma en todas estas plataformas.



Método 1: encontrar una terminal para ssh

Si bien es muy probable que ya esté trabajando desde una terminal, probablemente ssh no se dé cuenta de esto. Es posible que todavía esté intentando buscar un emulador de terminal TTY a pesar de que se encuentra dentro de una ventana de símbolo del sistema. Intente reproducir el error para probar esto. Configuramos una máquina virtual para que sirviera de ejemplo y ejecutamos ssh user@linuxtest.example ‘sudo /var/mail/startup.sh’ como prueba. Naturalmente, querrá cambiar el comando y la línea ssh a algo que coincida con lo que está tratando de hacer.



Deberá asegurarse de estar iniciando sesión en el servidor que pensaba que estaba. Independientemente, verifique si todavía recibe el mensaje de error sudo: no tty present y no askpass program especificado. Lo más probable es que, si todavía lo está recibiendo, lo verá tres veces y posiblemente incluso se le solicite que ingrese su contraseña de la forma en que lo haría si estuviera ejecutando sudo localmente en Debian o Ubuntu.

Intente agregar -t después de ssh para corregir su error de sintaxis. Nueve de cada diez veces esto obligará a ssh a asignarse un TTY virtual a sí mismo y pretender que se está ejecutando dentro de una terminal real. No tienes que cambiar nada más sobre tu comando. Simplemente agregue la opción -t después de las letras ssh y luego mantenga el host y el comando pasado igual. También querrá tener esto en cuenta si alguna vez tiene que ejecutar ssh en la última parte de su comando.



Por ejemplo, si recibía este mismo tipo de error al ejecutar un comando con el formato ssh -t usuario@linuxtest.example 'ssh user@linuxtest2.example' tendría que mantener la opción -t después del primer ssh para evitarlo. Tenga en cuenta que si luego cambió el segundo comando para producir o consumir datos, entonces no querrá usar -t en absoluto. Por ejemplo, si comenzara a ejecutar cat en lugar de un script, entonces podría volcar el -t ya que no necesitaría asignar una terminal para eso.

Método 2: parchear el archivo visudo

También puede tener un problema de configuración que produce este error. Modifique el archivo visudo emitiendo el sudo visudo comando y tenga en cuenta que nunca querrá editar este archivo de otra manera. Debe encontrar una línea que incluya ALL = NOPASSWD seguida de los tipos de comandos que no necesita para ingresar la contraseña del administrador para ejecutar.

Cada comando individual debe terminar con una coma, excepto el último de la línea. Por lo tanto, si tiene algo que se lee como / sbin / poweroff / sbin / start / sbin / stop, los tratará como un solo comando y le arrojará el error. Del mismo modo, si le falta un comando que está intentando ejecutar a través de ssh, también obtendrá este error. Realice los ajustes necesarios y guarde el archivo antes de verificar si el error aún es reproducible.

Si aún tiene el error incluso después de hacerlo y reiniciar el servicio, intente el siguiente comando en la imagen de abajo   y asegúrese de que la línea PermitTTY incluya la palabra sí después de ella. Si esta es la última línea de su archivo, asegúrese de que haya una nueva línea en blanco después. GNU nano realiza esta tarea automáticamente de forma predeterminada.

Deberá reiniciar los servicios relevantes antes de intentar reproducir nuevamente el mensaje de error.

3 minutos de lectura