Popravak: Pseudo-terminal neće biti dodijeljen jer stdin nije terminal



Isprobajte Naš Instrument Za Uklanjanje Problema

U većini slučajeva primit ćete zbunjujuću pogrešku 'pseudo-terminal neće biti dodijeljen jer stdin nije terminal' samo kada iz skripte izvodite neku vrstu SSH naredbe. Ako iz naredbenog retka pokrećete istu naredbu, ona bi mogla raditi sasvim u redu.



Prije nego što nastavite dalje, provjerite jeste li dodali svoj javni ključ SSH agentu, a zatim pokušajte ponovo koristiti ssh. Možda vam je upravo nedostajao ključ. S druge strane, ako to ne uspije, morat ćete malo riješiti probleme u skripti.



Metoda 1: Prisiljavanje i onemogućavanje pseudo-tty dodjele

Postoji par opcija naredbenog retka koje bi mogle brzo riješiti problem za vas. Pokušajte ssh -t -t -R praćen ostatkom onoga u što ste se pokušavali povezati kako biste prisilili pseudo-terminalnu dodjelu. Na primjer, recimo da ste namjeravali koristiti ssh -p 80 appuals@ssh.example.com za prijavu na svoj račun na example.com, što je naravno lutka za dokumentaciju koja ne postoji.



Pokušajte pokrenuti npr. ssh -t -t -R -p 80 appuals@ssh.example.com i provjerite rješava li to problem. Da biste se uspješno prijavili u sustav, morat ćete zamijeniti ime stvarnim računom i imenom hosta. To prisiljava dodjelu terminala, pa ne biste trebali vidjeti da pseudo-terminal neće biti dodijeljen, jer stdin nije greška terminala.

S druge strane, možda ćete na kraju imati konstantni niz poruka o pogreškama. Neki su korisnici primijetili da bi se ovo moglo smatrati zabavnim.

Svakako je frustrirajuće, bez obzira na to, pa upotrijebite Ctrl + C kako biste ubili postupak.



pseudo-terminal

Možete pokušati ili pomoću samo jednog prekidača -t ili povećavanjem broja. Ako to ne uspije, zamijenite bilo koje prekidače -t prekidačem -T u naredbi, na pr. ssh -T -R -p 80 appuals@ssh.example.com i provjerite radi li to.

Ova metoda onemogućava cjelokupni postupak dodjele pseudo-terminala, pa bi mogla raditi u slučajevima kada prisiljavanje to ne učini. Naravno, ništa od ovoga ne bi trebao predstavljati problem u naredbenom retku, ali svakako zabilježite kad pronađete koja opcija radi iz vaše skripte kako biste je mogli koristiti u svim budućim skriptama koje morate pokrenuti za pristup navedenom poslužitelju.

Budući da je naredba ssh ovim dvjema suprotnim opcijama dala slična imena, imajte na umu da -t forsira dodjelu pseudo-terminala dok ga -T onemogućava. Ove opcije razlikuju velika i mala slova i često su potrebne iz skripti jer ssh treba tradicionalni TTY terminal da bi radio. Naravno, u vašem biste slučaju u tu svrhu koristili emulator terminala.

2. metoda: Korištenje sshpass-a

Neki bi mogli otkriti da njihove skripte bolje rade s naredbom sshpass, koja nije uključena prema zadanim postavkama. Uvijek ga možete instalirati pomoću sudo apt-get install sshpass ili sudo yum install sshpass ako biste radije probali ili vam je potreban za vaš specifičan slučaj upotrebe.

Ako ga već ne upotrebljavate, onda vam vjerojatno nije potreban. Ipak, možete koristiti iste tehnike za iznenađenje poruka o pogreškama koje se odnose na pseudo-terminalnu dodjelu i u ovoj vrsti okruženja.

Na primjer, upotrijebite sshpass -p lozinku ssh -T appuals@ssh.example.com kako biste prisilili sustav da radi iznutra vaše skripte.

3. metoda: Ispravljanje pogrešaka u upravljanju poslom

Povremeno ćete možda dobiti još jednu poruku o pogrešci čak i nakon što sve to popravite. Ako primite upozorenje koje glasi da nema pristupa tty, a zatim se podsjetite da u vašoj ljusci nema kontrole posla, trebali biste moći raditi nekako normalno.

Ovu je pogrešku uzrokovalo nešto nepravilno na udaljenom poslužitelju vezano za csh, tcsh ili možda čak i za Almquist ili drugu ljusku. Možda to niste primijetili jer ste dobivali druge poruke o pogrešci, ali pod uvjetom da ne vidite druge o pseudo-terminalima, trebalo bi biti moguće nastaviti relativno poput uobičajenog.

U ovom slučaju možda nećete htjeti pokušati upotrijebiti Ctrl + Z da biste zaustavili procese jer možda neće biti načina da se ponovno pokrenu. Ako dobijete poruku o pogrešci koja glasi da su zaustavljeni poslovi prilikom izlaska, neće vam biti dopuštena odjava.

zaustavljeni poslovi

Upotrijebite naredbe ps i kill da zatvorite sve poslove koje ne možete zatvoriti, pod pretpostavkom da vam ne smeta da u tom procesu izgubite posao. Sad ćete moći izaći.

Oznake Linux kako raditi ssh 3 minute čitanja