Corregit: sudo: no hi ha cap tty present i no s'ha especificat cap programa askpass

Fixed Sudo No Tty Present

La línia de sortida especificada pel programa no tty present i sense askpass és un d'aquests missatges d'error ssh que realment no és tan útil perquè realment no arriba al punt del que està causant el problema. El més probable és que realment estigueu treballant amb un tipus TTY vàlid quan vegeu el missatge i probablement us hàgiu ocupat d’introduir la vostra contrasenya sudo a través de ssh. És més que probable que tingueu en compte un error de sintaxi, però el missatge no tracta directament aquest fet.

Com que es tracta d’un problema associat amb el propi ssh, és molt probable que pugueu reproduir el problema a Linux, FreeBSD, macOS i els serveis Unix de Cygwin a Microsoft Windows. Afortunadament, la solució hauria de ser pràcticament la mateixa en totes aquestes plataformes.

Mètode 1: trobar una terminal per a ssh

Tot i que probablement ja esteu treballant des d’un terminal, probablement ssh no se n’adona. És possible que encara intenteu cercar un emulador de terminal TTY malgrat que esteu dins d’una finestra d’indicadors d’ordres. Proveu de reproduir l'error per provar-ho. Vam configurar una màquina virtual perquè servís d’exemple i vam córrer ssh user@linuxtest.example 'suo /var/mail/startup.sh' com a prova. Naturalment, voldreu canviar la línia d’ordres i ssh per una cosa que coincideixi amb el que esteu intentant fer.





Voleu assegurar-vos que inicieu la sessió al servidor que creieu que era. Independentment, comproveu si encara rebeu el missatge d'error especificat en el programa sudo: no tty i no hi ha cap programa askpass. El més probable és que, si encara el rebeu, el veureu tres vegades i, fins i tot, fins i tot se us demanarà que introduïu la vostra contrasenya de la mateixa manera que tindríeu si executeu sudo localment a Debian o Ubuntu.

Proveu d'afegir -t després de ssh per corregir l'error de sintaxi. Nou vegades de cada deu, això obligarà a ssh a assignar un TTY virtual a si mateix i fingir que passa a funcionar dins d'un terminal real. No cal que canvieu res més de la vostra ordre. Simplement afegiu l'opció -t després de les lletres ssh i, a continuació, mantingueu el comandament host i passat igual. També voldreu tenir-ho en compte si alguna vegada heu d’executar ssh a la darrera part del vostre comandament.

Per exemple, si obteniu aquest mateix tipus d'error en executar una ordre amb el format ssh -t usuari@linuxtest.exemple 'ssh usuari@linuxtest2.exemple' hauríeu de mantenir l'opció -t després del primer ssh per evitar-ho. Tingueu en compte que si més endavant canvieu la segona ordre per produir o consumir dades, no voldríeu utilitzar -t en absolut. Per exemple, si comenceu a executar cat en lloc d'un script, podríeu bolcar el -t, ja que no necessitareu assignar un terminal per a això.



Mètode 2: Patching del fitxer visudo

És possible que també tingueu un problema de configuració que produeixi aquest error. Modifiqueu el fitxer visudo emetent el fitxer suo visudo i tingueu en compte que mai no voldreu editar aquest fitxer d’una altra manera. Haureu de trobar una línia que contingui ALL = NOPASSWD seguida dels tipus d’ordres que no necessiteu introduir la contrasenya de l’administrador per executar-la.

Cada ordre individual ha d’acabar amb una coma excepte l’última de la línia. Per tant, si teniu alguna cosa que es llegís com / sbin / poweroff / sbin / start / sbin / stop, tractarà tot això com una sola ordre i us llançarà l'error. De la mateixa manera, si us falta una ordre que intenteu executar mitjançant ssh, també obtindreu aquest error. Feu els ajustos necessaris i deseu el fitxer abans de comprovar si l'error encara es pot reproduir.

Si encara teniu l'error fins i tot després de fer-ho i reiniciar el servei, proveu el fitxer següent comanda a la imatge següent i assegureu-vos que la línia PermitTTY conté la paraula sí després. Si aquesta és l'última línia del fitxer, assegureu-vos que després hi hagi una línia nova en blanc. GNU nano realitza aquesta tasca automàticament per defecte.

Abans d’intentar reproduir de nou el missatge d’error, haureu de reiniciar qualsevol servei rellevant.

3 minuts de lectura