Mi a célja az ál-tty-nek?


Legjobb válasz

A programok terminálon történő futtatása extra funkciókat biztosít, amelyek nincsenek meg, amikor programokat kötegelt feladatokként futtat. Például, ha futtat egy folyamatot a terminálon, megszakíthatja azt a Ctrl + C megnyomásával, de ha egy folyamat nincs társítva egyetlen terminálhoz sem, akkor “nem szakíthatja meg a Ctrl + C billentyűkombinációval, ehelyett valószínűleg futtatni kill vagy valami hasonlót. A terminálokat ebben a válaszban részletesebben elmagyarázzuk.

A távoli sshd pszeudo-terminál párokat használva átveszi a billentyűzet és a képernyő szerepét. Ha a távoli folyamat egy “igazi” terminálról olvasott, például /dev/tty1, akkor közvetlenül a billentyűzetről kapta meg a bemenetét. Ehelyett a sshd folyamat átadja a billentyűleütéseket a távoli folyamatnak azáltal, hogy beírja őket az álterminál fő végére. Ezután az Ön által futtatott program adatokat fogad az álterminál szolga végéről, mintha a billentyűzetről érkezne. Hasonlóképpen, amikor a folyamat az álterminál szolga végére ír, akkor illúziója van, hogy “igaz” terminálra ír, amely karaktereket nyomtat a képernyőn. De ehelyett sshd elolvassa a főoldalra írt adatokat, titkosítja és a vezetéken keresztül visszaküldi Önnek.

Ha meg szeretné tekinteni, mi történik terminál nélkül , próbáljon futtatni valami hasonlót: ssh -T remote.host. Elindítja a héjat a távoli gazdagépen, de a héj nem fog zavarni egy parancs nyomtatását, mert nincs terminálja, ezért úgy gondolja, hogy kötegelt módban fut. Azt sem fogja tudni futtatni sudo -t a távoli gazdagépen, mert a sudo megköveteli, hogy a jelszó beírása a terminálon olvasható legyen alapértelmezett bemenetből.

Alapértelmezés szerint a távoli sshd csak akkor oszt ki egy pty-t, ha nem ad meg parancsot. Ha megpróbálja a ssh remote.host screen -t, akkor látni fogja, hogy a parancs megadása elnyomja a pty kiosztását, és ismét bajban lesz. Ennek elkerülése érdekében adja meg a -t beállítást, majd a távoli sshd mindig megpróbál kiosztani egy terminált.

… hacsak a terminálon nincs terminál, amivel lehetne beszélni, például ha ssh fájlból olvas. Ebben az esetben kényszerítheti pty allokációt a ssh -t -t használatával. Ennek nem szándékos hatása lehet, mert a távoli vég minden ssh “szabványos bemenetre írt bájtra úgy reagál, mintha a billentyűzeten írta volna be. Például a Ctrl + C a billentyűzet előállítja az ASCII 3 kódot, így ha a helyi ssh történetesen beolvassa a bemeneti fájlból a 3 értékű bájtot, akkor ezt továbbítja a távoli gazdagépnek, a A távoli sshd beírja a pty master végére, és a kern elküldi a SIGINT-et a slave végéről a folyamat olvasására. A terminálok érdekes lények.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük