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.