Paras vastaus
Ohjelmien suorittaminen päätelaitteessa antaa sinulle ylimääräisiä toimintoja, joita ei ole siellä, kun suoritat ohjelmia erätöinä Jos esimerkiksi suoritat prosessin päätelaitteessa, voit keskeyttää sen painamalla Ctrl + C, mutta jos prosessia ei ole liitetty mihinkään päätelaitteeseen, et voi ”t keskeyttää sitä näppäimillä Ctrl + C, sen sijaan sinulla todennäköisesti olisi suorittaa kill
tai jotain sellaista. Päätteitä selitetään tarkemmin tässä vastauksessa.
Kauko-ohjain sshd
käyttää näennäispäätettä parin ottamiseksi vastaan näppäimistön ja näytön roolin. Jos etäprosessi lukisi ”tosi” päätelaitteesta, kuten /dev/tty1
, se saisi syötteensä suoraan näppäimistöltä. Sen sijaan sshd
-prosessi siirtää näppäinpainalluksesi etäprosessiin kirjoittamalla ne pseudopäätteen pääpäähän. Käynnissä oleva ohjelma vastaanottaa sitten tietoja pseudopäätteen orjapäästä ikään kuin se olisi tullut näppäimistöltä. Samoin kun prosessi kirjoittaa pseudopäätteen orjapäähän, sillä on illuusio, että se ”kirjoittaa” todelliseen ”päätelaitteeseen, joka tulosta merkkejä näytölle. Sen sijaan sshd
lukee päähän kirjoitetut tiedot, salaa ne ja lähettää ne johdon kautta takaisin sinulle.
Jos haluat nähdä, mitä tapahtuu ilman päätelaitetta , yritä suorittaa jotain esimerkiksi ssh -T remote.host
. Se käynnistää kuoren etäisännässä, mutta kuori ei vaivaudu tulostamaan kehotetta, koska sillä ei ole päätelaitetta, joten se ajattelee, että se toimii eräajotilassa. Et myöskään voi suorittaa sudo
etäkoneella, koska sudo
vaatii salasanan kirjoittamisen päätelaitteeseen lukemisen sijaan se tavallisesta syötteestä.
Oletusarvoisesti kauko-ohjain sshd
jakaa pty: n vain, kun et määritä komentoa. Jos yrität ssh remote.host screen
, huomaat, että komennon määrittäminen estää pty-varauksen ja olet taas pulassa. Tämän välttämiseksi määritä -t
-vaihtoehto ja sitten kauko-ohjain sshd
yrittää aina kohdistaa päätelaitteen.
… ellei paikallisessa päässä ole päätelaitetta, jonka kanssa voi puhua, esimerkiksi jos ssh
lukee tiedostosta. Tällöin voit pakottaa pty-allokoinnin käyttämällä ssh -t -t
. Tällä voi olla joitain tahattomia vaikutuksia, koska etäpää reagoi jokaiseen tavuun, joka on kirjoitettu ssh
”vakiotuloon, ikään kuin se kirjoitettaisiin näppäimistöllä. Esimerkiksi Ctrl + C näppäimistö tuottaa ASCII-koodin 3, joten jos paikallisen ssh
pitäisi lukea tavu, jonka arvo on 3, syötetiedostostaan, se välittää sen etäkoneelle, remote sshd
kirjoittaa sen pty: n pääpäähän ja ydin lähettää SIGINTin prosessin lukemiseen orjapäästä. Päätteet ovat mielenkiintoisia olentoja.