NUSTATYTI: Pseudoterminalas nebus paskirstytas, nes „stdin“ nėra terminalas
Daugeliu atvejų klaidinančią klaidą „pseudoterminalas nebus paskirstytas, nes„ stdin “nėra terminalas“ gausite tik tada, kai vykdote kažkokią SSH komandą iš scenarijaus. Jei tą pačią komandą vykdote iš komandinės eilutės, ji gali veikti puikiai.
Prieš eidami toliau, įsitikinkite, kad pridėjote savo viešąjį raktą prie SSH agento, tada bandykite dar kartą naudoti ssh. Gali būti, kad jums tiesiog trūksta rakto. Kita vertus, jei tai neveikia, turėsite atlikti šiek tiek trikčių šalinimo scenarijuje.
1 metodas: priversti ir išjungti pseudo-tty paskirstymą
Yra keletas komandų eilutės parinkčių, kurios gali greitai išspręsti problemą. Pabandykite ssh -t -t -R, po to likusius dalykus, prie kurių bandėte prisijungti, kad priverstumėte pseudoterminalinį paskirstymą. Pvz., Tarkime, kad ketinate naudoti ssh -p 80 [email protected], kad prisijungtumėte prie savo paskyros example.com, kuris, žinoma, yra manekenas neegzistuojantiems dokumentams.
Pabandykite paleisti, pvz. ssh -t -t -R -p 80 [email protected] ir sužinokite, ar tai išsprendžia problemą. Kad sėkmingai prisijungtumėte prie sistemos, jūs, žinoma, turėsite pakeisti vardą tikra savo paskyra ir pagrindinio kompiuterio vardu. Tai priverčia paskirstyti terminalą, todėl neturėtumėte matyti, kad pseudoterminalas nebus paskirstytas, nes „stdin“ nėra terminalo klaida.
Kita vertus, galite tiesiog gauti nuolatinę klaidos pranešimų eilutę. Kai kurie vartotojai pastebėjo, kad tai gali būti laikoma linksma.
Nepaisant to, tai tikrai kelia vargą, todėl naudokite „Ctrl“ + C, kad užmuštumėte procesą.
Galite pabandyti naudoti tik vieną -t jungiklį arba padidinti skaičių. Jei tai neveikia, tada pakeiskite bet kokius -t jungiklius komandoje -T jungikliu, pvz. ssh -T -R -p 80 [email protected] ir pažiūrėkite, ar tai veikia.
Šis metodas iš viso išjungia visą pseudoterminalo paskirstymo procesą, todėl jis gali veikti tais atvejais, kai to neverčia. Žinoma, tai neturi kelti problemų iš komandinės eilutės, tačiau įsitikinkite, kad pastebėjote, kuri parinktis veikia iš jūsų scenarijaus, kad galėtumėte ją naudoti kituose scenarijuose, kuriuos turite paleisti, kad galėtumėte pasiekti minėtą serverį.
Kadangi komanda ssh davė šias dvi priešingas parinktis panašius pavadinimus, atminkite, kad -t priverčia paskirstyti pseudoterminalus, o -T jį išjungia. Šios parinktys skiriamos didžiosiomis ir mažosiomis raidėmis, ir jos dažnai reikalingos iš scenarijų vidaus, nes „ssh“ darbui reikia tradicinio TTY terminalo. Natūralu, kad šiuo atveju šiam tikslui naudosite terminalo emuliatorių.
2 metodas: sshpass naudojimas
Kai kurie žmonės gali pastebėti, kad jų scenarijai geriau veikia su komanda sshpass, kuri nėra numatyta. Visada galite jį įdiegti naudodami „sudo apt-get install sshpass“ arba „sudo yum install sshpass“, jei norite pabandyti arba dėl to, kad jums to reikia konkrečiam naudojimo atvejui.
Jei dar nenaudojate, tikriausiai jums to nereikia. Nepaisant to, galite naudoti tuos pačius metodus, kad nustebintumėte klaidų pranešimus, susijusius su pseudoterminalo paskirstymu, ir tokioje aplinkoje.
Pavyzdžiui, naudokite sshpass -p slaptažodį ssh -T [email protected], kad priverstumėte sistemą veikti iš jūsų scenarijaus.
3 metodas: užduočių valdymo klaidų taisymas
Kartais net ištaisę visa tai galite gauti vieną kitą klaidos pranešimą. Jei gaunate įspėjimą, kad nėra prieigos prie tty, tada jums primenama, kad jūsų apvalkale nėra darbo kontrolės, turėtumėte dirbti šiek tiek normaliai.
Ši klaida atsiranda dėl to, kad nuotoliniame serveryje kažkas yra netaisyklinga, susijusi su csh, tcsh ar galbūt su „Almquist“ ar kitu apvalkalu. Galbūt to nepastebėjote, nes gaudavote kitų klaidų pranešimų, tačiau jei nematote kitų apie pseudoterminalus, turėtų būti įmanoma tęsti palyginti taip, kaip paprastai.
Vis dėlto nenorite bandyti naudoti „Ctrl“ + Z, kad sustabdytumėte procesus, nes gali būti, kad nėra galimybės jų paleisti iš naujo. Jei išeidami gaunate klaidos pranešimą, kuriame rašoma, kad uždaryti darbai yra sustabdyti, jums nebus leista atsijungti.
Jei norite uždaryti visus darbus, kurių negalite uždaryti, naudokite komandas „ps and kill“, darant prielaidą, kad neprieštaraujate darbo netekimui. Dabar galėsite išeiti.
Žymos „Linux how-to ssh“