Popravljeno: sudo: ni prisotnega tty in ni naveden program askpass



Preizkusite Naš Instrument Za Odpravo Težav

Izhodna vrstica, ki ni prisotna in ne zahteva programa passpass, je eno od tistih sporočil o napakah ssh, ki v resnici ni tako koristno, ker v resnici ne pride do točke, kaj povzroča težavo. Več kot verjetno dejansko delate z nekakšno veljavno TTY, ko vidite sporočilo in ste se verjetno v redu ukvarjali z vnosom gesla za sudo prek ssh. Več kot verjetno imate opravka s sintaksno napako, vendar sporočilo tega dejstva ne obravnava neposredno.



Ker gre za težavo, povezano s samim ssh, boste težavo več kot verjetno lahko reproducirali v sistemih Linux, FreeBSD, macOS in Cygwin's Unix v sistemu Microsoft Windows. Na srečo bi moral biti popravek na vseh teh platformah skoraj enak.



1. način: Iskanje terminala za ssh

Čeprav več kot verjetno že delate s terminala, se ssh tega verjetno ne zaveda. Morda še vedno poskuša poiskati emulator terminala TTY, kljub temu da ste v oknu ukaznega poziva. Poskusite reproducirati napako, da jo preizkusite. Konfigurirali smo navidezni stroj za zgled in zagnali ssh user@linuxtest.example ‘sudo /var/mail/startup.sh’ kot test. Seveda boste želeli ukaz in vrstico ssh spremeniti v nekaj, kar ustreza temu, kar želite storiti.



Zagotoviti boste želeli, da se prijavite v strežnik, za katerega ste mislili, da ste. Ne glede na to preverite, ali še vedno prejemate sudo: noben tty ni prisoten in nobeno sporočilo o napaki ne določa programa passpass. Če ga še vedno prejemate, ga boste videli trikrat in morda boste celo pozvani, da vnesete svoje geslo tako, kot bi ga imeli, če lokalno zaženete sudo v Debianu ali Ubuntuju.

Poskusite dodati -t po ssh, da popravite napako v sintaksi. Devetkrat od desetih bo to prisililo ssh, da si dodeli virtualni TTY in se pretvarja, da se zgodi, da teče znotraj resničnega terminala. V ukazu vam ni treba spremeniti ničesar drugega. Preprosto dodajte možnost -t za črkami ssh in obdržite enak ukaz gostitelja in posredovanega. To boste tudi imeli v mislih, če boste morali kdaj zagnati ssh v zadnjem delu ukaza.



Na primer, če ste pri izvajanju ukaza, ki je bil oblikovan kot ssh -t user@linuxtest.example 'ssh user@linuxtest2.example' po prvem ssh bi morali obdržati možnost -t, da jo preprečite. Upoštevajte, da če ste kasneje drugi ukaz spremenili tako, da ustvarite ali porabite podatke, potem sploh ne želite uporabljati -t. Če bi na primer namesto skripta začeli izvajati mačko, bi lahko izpisali -t, ker vam za to ne bi bilo treba dodeliti terminala.

2. način: popravljanje datoteke visudo

Morda imate tudi težavo s konfiguracijo, ki povzroči to napako. Datoteko visudo spremenite tako, da izdate datoteko sudo visudo ne pozabite, da te datoteke nikoli ne boste želeli urejati drugače. V njej bi morali najti vrstico, ki vsebuje ALL = NOPASSWD, ki ji sledijo tipi ukazov, ki jih za zagon ne potrebujete za vnos skrbniškega gesla.

Vsak posamezen ukaz se mora končati z vejico, razen zadnjega v vrstici. Torej, če ste imeli nekaj, kar se je bralo kot / sbin / poweroff / sbin / start / sbin / stop, bo to vse obravnavalo kot en sam ukaz in vam vrglo napako. Če pogrešate ukaz, ki ga poskušate zagnati prek ssh, boste dobili tudi to napako. Izvedite potrebne prilagoditve in shranite datoteko, preden preverite, ali je napaka še vedno ponovljiva.

Če imate še vedno napako tudi po tem in znova zagnali storitev, poskusite naslednji ukaz na spodnji sliki in poskrbite, da bo v vrstici PermitTTY za njo navedena beseda da. Če je to zadnja vrstica v datoteki, se prepričajte, da je nato prazna nova vrstica. GNU nano to nalogo privzeto izvede samodejno.

Pred ponovnim poskusom ponovitve sporočila o napaki boste morali znova zagnati vse ustrezne storitve.

3 minute branja