U većini slučajeva dobit ć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 [email protected] 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 [email protected] i provjeriti rješava li to problem. Da biste se uspješno prijavili u sustav, morat ćete zamijeniti ime stvarnim računom i imenom hosta. Ovo forsira 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 da ubijete postupak.
Možete pokušati ili pomoću samo jednog prekidača -t ili povećavanjem broja. Ako ovo ne uspije, zamijenite bilo koje prekidače -t prekidačem -T u naredbi, npr. Ssh -T -R -p 80 [email protected] 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 su opcije osjetljive na velika i mala slova i često su potrebne iznutra skripti, jer ssh treba tradicionalni TTY terminal za rad. 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 rade bolje 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 želite pokušati ili zato što vam je potreban za vaš specifičan slučaj upotrebe.
Ako ga već ne koristite, vjerojatno vam to ne treba. 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 [email protected] 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 nijednu drugu o pseudo-terminalima, trebalo bi biti moguće nastaviti relativno kao i obično.
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.
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. Moći ćete izaći sada.
Označi Linux kako da ssh