Fix: Pseudo-terminal vil ikke blive tildelt, fordi stdin ikke er en terminal
I de fleste tilfælde vil du modtage en forvirrende pseudo-terminal ikke blive tildelt, fordi stdin ikke kun er en terminalfejl, når du kører en slags SSH-kommando fra et script. Hvis du kører den samme kommando fra kommandolinjen, kan det virke helt fint.
Før du går videre, skal du sørge for at have tilføjet din offentlige nøgle til SSH-agenten og derefter prøve at bruge ssh igen. Du har måske lige manglet en nøgle. På den anden side, hvis dette ikke virker, skal du lave en lille fejlfinding i dit script.
Metode 1: Tvinge og deaktivere pseudotildeling
Der er et par kommandolinjeindstillinger, der kan løse problemet hurtigt for dig. Prøv ssh -t -t -R efterfulgt af resten af det, du forsøgte at oprette forbindelse til for at tvinge pseudoterminalallokering. Lad os f.eks. Sige at du skulle bruge ssh -p 80 [email protected] til at logge ind på din konto på example.com, hvilket selvfølgelig er en dummy til dokumentation, der ikke findes.
Prøv at køre f.eks. Ssh -t -t -R -p 80 [email protected] og se om dette løser problemet. Du skal selvfølgelig erstatte navnet med din aktuelle konto og værtsnavn for at logge ind i systemet. Dette tvinger tildelingen af en terminal, så du bør ikke se, at den pseudoterminal ikke vil blive allokeret, fordi stdin ikke er en terminalfejl.
På den anden side kan du lige ender med en konstant streng fejlmeddelelser. Nogle brugere har bemærket, at dette kunne betragtes som underholdende.
Det er helt sikkert frustrerende, uanset, så brug Ctrl + C til at dræbe processen.
Du kan enten prøve at bruge kun en-t-switch eller at øge nummeret. Hvis dette ikke virker, skal du erstatte eventuelle taster med en -T-switch i kommandoen, f.eks. Ssh -T -R-p 80 [email protected] og se om det virker.
Denne metode deaktiverer hele den pseudo-terminale allokeringsproces helt, så det kan virke i tilfælde hvor det ikke tvinges. Selvfølgelig må ingen af dette være et problem fra kommandolinjen, men sørg for at lave en note, når du finder hvilken indstilling der fungerer fra dit script, så du kan bruge det i fremtidige scripts, du skal køre for at få adgang til den pågældende server.
PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke herSiden ssh-kommandoen gav disse to modsatte muligheder lignende navne, husk at -t tvinger tildeling af pseudo-terminaler, mens -T deaktiverer det. Disse muligheder er store og små bogstaver, og de er ofte nødvendige indefra scripts, fordi ssh har brug for en traditionel TTY-terminal til at fungere. Naturligvis vil du i dit tilfælde bruge din terminalemulator til dette formål.
Metode 2: Brug af sshpass
Nogle mennesker kan måske opleve, at deres scripts fungerer bedre med sshpass-kommandoen, som ikke er inkluderet som standard. Du kan altid installere det med sudo apt-get install sshpass eller sudo yum installer sshpass, hvis du foretrækker at prøve det, eller fordi du har brug for det til din specifikke brugssag.
Hvis du ikke allerede bruger det, har du sandsynligvis ikke brug for det. Ikke desto mindre kan du bruge de samme teknikker til at overraske fejlmeddelelser relateret til pseudo-terminal tildeling i denne form for et miljø også.
For eksempel, brug sshpass -p adgangskode ssh -T [email protected] for at tvinge systemet til at arbejde inde fra dit script.
Metode 3: Fastsættelse af fejl på jobhåndtering
Til gengæld kan du få en anden fejlmeddelelse, selv efter at du har fastsat alt dette. Hvis du modtager en advarsel, der ikke indeholder adgang til tty, og du bliver mindet om, at der ikke er nogen jobkontrol i din shell, skal du kunne arbejde lidt normalt.
Denne fejl skyldes, at noget er uregelmæssigt på den eksterne server relateret til enten csh, tcsh eller muligvis endda Almquist eller anden shell. Du har muligvis ikke bemærket det, fordi du fik andre fejlmeddelelser, men forudsat at du ikke ser nogen andre om pseudo-terminaler, skal det være muligt at fortsætte forholdsvis som den måde, du normalt ville.
Du kan muligvis ikke forsøge at bruge Ctrl + Z i dette tilfælde for at stoppe processer, fordi der ikke er nogen måde at få dem startet sikkerhedskopieret igen. Hvis du får en fejlmeddelelse, der læses, er der stoppet jobs, når du afslutter, så får du ikke lov til at logge ud.
Brug ps og kill kommandoer til at lukke alle job, du ikke kan lukke, forudsat at du ikke har noget imod at miste arbejde i processen. Du kan afslutte nu.
PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her