Solució: el pseudo-terminal no s'assignarà perquè stdin no és un terminal



Proveu El Nostre Instrument Per Eliminar Problemes

En la majoria dels casos, rebreu un error confús 'no s'assignarà un pseudoterminal perquè stdin no és un terminal' només quan executeu algun tipus d'ordre SSH des d'un script. Si executeu la mateixa ordre des de la línia d’ordres, pot ser que funcioni perfectament.



Abans d’anar més lluny, assegureu-vos d’haver afegit la vostra clau pública a l’agent SSH i, a continuació, proveu d’utilitzar ssh de nou. És possible que us hagi faltat una clau. D’altra banda, si això no funciona, haureu de fer una mica de resolució de problemes al vostre script.



Mètode 1: forçar i desactivar l'assignació de pseudo-tty

Hi ha un parell d'opcions de línia d'ordres que us poden solucionar el problema ràpidament. Proveu ssh -t -t -R seguit de la resta del que esteu intentant connectar per forçar l'assignació de pseudoterminal. Per exemple, suposem que faríeu servir ssh -p 80 appuals@ssh.example.com per iniciar la sessió al vostre compte a example.com, que per descomptat és un maniquí per a la documentació que no existeix.



Proveu a córrer, per exemple ssh -t -t -R -p 80 appuals@ssh.example.com i comproveu si això soluciona el problema. Per descomptat, haureu de substituir el nom pel vostre compte i nom d'amfitrió reals per iniciar la sessió correctament al sistema. Això obliga a assignar un terminal, de manera que no hauríeu de veure que el pseudoterminal no s’assignarà perquè stdin no és un error de terminal.

D'altra banda, és possible que acabeu amb una cadena constant de missatges d'error. Alguns usuaris han remarcat que això es pot considerar divertit.

Sens dubte, és frustrant, feu servir Ctrl + C per acabar amb el procés.



pseudoterminal

Podeu provar només amb un commutador d'una t o augmentar el nombre. Si això no funciona, substituïu qualsevol commutador -t per un commutador -T a l'ordre, per exemple. ssh -T -R -p 80 appuals@ssh.example.com i comproveu si funciona.

Aquest mètode desactiva tot el procés d'assignació de pseudoterminals, de manera que pot funcionar en casos en què no ho faci forçant. Per descomptat, res d’això no hauria de suposar cap problema des de la línia d’ordres, però assegureu-vos de fer una nota quan trobeu quina opció funciona des del vostre script perquè pugueu utilitzar-lo en qualsevol script futur que hàgiu d’executar per accedir a aquest servidor.

Com que l'ordre ssh va donar a aquestes dues opcions oposades noms similars, recordeu que -t obliga a assignar pseudo-terminals mentre que -T la desactiva. Aquestes opcions distingeixen entre majúscules i minúscules i sovint són necessàries des de les seqüències d’ordres perquè ssh necessita un terminal TTY tradicional per funcionar. Naturalment, en el vostre cas, utilitzaríeu l’emulador de terminal amb aquest propòsit.

Mètode 2: utilitzar sshpass

És possible que algunes persones vegin que els seus scripts funcionen millor amb l’ordre sshpass, que no s’inclou per defecte. Sempre podeu instal·lar-lo amb sudo apt-get install sshpass o sudo yum install sshpass si preferiu provar-ho o perquè el necessiteu per al vostre cas d’ús específic.

Si encara no l’utilitzeu, és probable que no el necessiteu. Tot i això, podeu utilitzar les mateixes tècniques per sorprendre els missatges d’error relacionats amb l’assignació de pseudo-terminals en aquest tipus d’entorn també.

Per exemple, utilitzeu la contrasenya sshpass -p ssh -T appuals@ssh.example.com per forçar el sistema a funcionar des del vostre script.

Mètode 3: Solució d'errors de gestió de feines

De vegades, pot ser que obtingueu un altre missatge d'error fins i tot després d'haver solucionat tot això. Si rebeu una advertència que diu que no hi ha accés a tty i que se us recorda que no hi ha control de feina al vostre intèrpret, hauríeu de poder treballar amb certa normalitat.

Aquest error és causat per alguna cosa irregular al servidor remot relacionada amb csh, tcsh o possiblement fins i tot amb Almquist o un altre intèrpret d'ordres. És possible que no us n’hagueu adonat perquè rebia altres missatges d’error, però sempre que no en vegeu cap altre sobre pseudoterminals, hauria de ser possible continuar de la mateixa manera que ho faríeu normalment.

És possible que no vulgueu provar d'utilitzar Ctrl + Z en aquest cas per aturar els processos, perquè és possible que no hi hagi cap manera de tornar-los a iniciar. Si rebeu un missatge d'error que diu que hi ha tasques aturades quan sortiu, no podreu tancar la sessió.

feines aturades

Utilitzeu les ordres ps i kill per tancar qualsevol treball que no pugueu tancar, suposant que no us importa perdre la feina durant el procés. Ja podreu sortir.

Etiquetes Procediment de Linux ssh 3 minuts de lectura