Popravljeno: sudo: ni prisotnega tty in ni naveden program askpass
Izhodna vrstica, ki ni prisotna in ni določen program askpass, je eno 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 skladenjsko napako, vendar sporočilo tega dejstva ne obravnava neposredno.
Ker gre za težavo, povezano s samim ssh-jem, jo boste 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 [email protected] ‘sudo /var/mail/startup.sh’ kot test. Seveda boste želeli ukaz in vrstico ssh spremeniti v nekaj, kar se ujema s tem, 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: ni prisotnega tty in sporočilo o napaki ni navedeno v programu passpass. Če ga še vedno prejemate, ga boste videli trikrat in morda boste celo pozvani, da vnesete geslo tako, kot bi ga imeli, če lokalno zaženete sudo v Debianu ali Ubuntuju.
Poskusite dodati -t po ssh, da popravite sintaksno napako. Devetkrat od desetih bo to prisililo ssh, da si dodeli virtualni TTY in se pretvarja, da se zgodi, da se izvaja 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 želeli upoštevati tudi, če boste morali v zadnjem delu ukaza zagnati ssh.
Na primer, če ste pri izvajanju ukaza, ki je bil oblikovan kot ssh -t [email protected] 'ssh [email protected]' 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ča 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, za katere za zagon ne potrebujete 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 želite 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 zaženete storitev, poskusitenaslednji ukaz na spodnji sliki in poskrbite, da bo v vrstici PermitTTY za njo navedena beseda da. Če je to zadnja vrstica v datoteki, se pozneje prepričajte, da je 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.