Popravek: Psevdo-terminal ne bo dodeljen, ker stdin ni terminal



Preizkusite Naš Instrument Za Odpravo Težav

V večini primerov boste dobili zmedeno napako »psevdo-terminal ne bo dodeljen, ker stdin ni terminal« le, ko iz skripta izvajate nekakšen ukaz SSH. Če izvajate isti ukaz iz ukazne vrstice, potem lahko deluje popolnoma v redu.



Preden nadaljujete, se prepričajte, da ste v SSH agent dodali svoj javni ključ, in nato znova poskusite uporabiti ssh. Morda ste ravno pogrešali ključ. Po drugi strani pa, če to ne deluje, boste morali v skriptu malo odpraviti težave.



1. način: Prisilno in onemogočanje dodelitve psevdotikov

Obstaja nekaj možnosti ukazne vrstice, ki vam lahko hitro rešijo težavo. Poskusite ssh -t -t -R, čemur sledi preostanek tega, v kar ste se poskušali povezati, da vsilite psevdo-terminalno dodelitev. Recimo, da ste ssh -p 80 appuals@ssh.example.com uporabili za prijavo v svoj račun na example.com, kar je seveda lutka za dokumentacijo, ki ne obstaja.



Poskusite zagnati npr. ssh -t -t -R -p 80 appuals@ssh.example.com in preverite, ali to odpravlja težavo. Za uspešno prijavo v sistem boste morali seveda zamenjati ime z dejanskim računom in imenom gostitelja. To prisili dodeljevanje terminala, zato ne smete videti, da psevdo-terminal ne bo dodeljen, ker stdin ni napaka terminala.

Po drugi strani pa boste morda na koncu dobili nenehno vrsto sporočil o napakah. Nekateri uporabniki so pripomnili, da bi se to lahko zdelo zabavno.

Vsekakor je moteče, ne glede na to, zato uporabite Ctrl + C, da ubijete postopek.



psevdo-terminal

Poskusite lahko z uporabo samo enega stikala -t ali pa povečate število. Če to ne deluje, zamenjajte vsa stikala -t s stikalom -T v ukazu, npr. ssh -T -R -p 80 appuals@ssh.example.com in preverite, ali to deluje.

Ta metoda v celoti onemogoči celoten postopek dodeljevanja psevdo-terminalov, zato lahko deluje v primerih, ko vsiljevanje ne. Seveda z ukazno vrstico nič od tega ne bi smelo predstavljati težav, vendar si oglejte, katera možnost deluje v vašem skriptu, da jo lahko uporabite v vseh prihodnjih skriptih, ki jih morate zagnati za dostop do omenjenega strežnika.

Ker je ukaz ssh tem dvema nasprotnima možnostma dal podobni imeni, ne pozabite, da -t prisili dodeljevanje psevdo-terminalov, medtem ko ga -T onemogoči. Te možnosti razlikujejo med velikimi in malimi črkami in so pogosto potrebne znotraj skriptov, ker ssh za delovanje potrebuje tradicionalni terminal TTY. Seveda bi v tem primeru uporabili emulator terminala za ta namen.

2. način: Uporaba sshpass

Nekateri bodo morda ugotovili, da njihovi skripti bolje delujejo z ukazom sshpass, ki privzeto ni vključen. Vedno ga lahko namestite s sudo apt-get install sshpass ali sudo yum install sshpass, če želite poskusiti ali ker ga potrebujete za svoj primer uporabe.

Če ga še ne uporabljate, ga verjetno ne potrebujete. Kljub temu lahko z istimi tehnikami presenetite sporočila o napakah, povezanih s psevdo-terminalom, tudi v tovrstnem okolju.

Na primer, uporabite sshpass -p geslo ssh -T appuals@ssh.example.com, da prisilite sistem, da deluje znotraj skripta.

3. način: odpravljanje napak pri upravljanju opravil

Občasno boste morda dobili še eno sporočilo o napaki, tudi ko boste vse to popravili. Če prejmete opozorilo, v katerem piše, da ni dostopa do tty, in vas nato opozorijo, da v vaši lupini ni nadzora nad opravili, bi morali delovati nekoliko normalno.

Do te napake pride zaradi nepravilnega delovanja oddaljenega strežnika, povezanega s csh, tcsh ali morda celo z Almquist ali drugo lupino. Morda tega niste opazili, ker ste prejemali druga sporočila o napakah, vendar pod pogojem, da o psevdo-terminalih ne vidite nobenega drugega, bi moralo biti mogoče nadaljevati razmeroma podobno kot običajno.

Morda v tem primeru ne želite poskusiti uporabiti Ctrl + Z, da ustavite procese, ker morda ne bo mogoče, da se znova zaženejo. Če se pri izhodu prikaže sporočilo o napaki, v katerem piše, da so ustavljena opravila, se ne boste mogli odjaviti.

ustavljena delovna mesta

Uporabite ukaze ps in kill, da zaprete vsa opravila, ki jih ne morete zapreti, ob predpostavki, da v procesu ne boste izgubili dela. Zdaj boste lahko izstopili.

Oznake Linux navodila ssh 3 minute branja