WIKI
웹 터미널
웹 터미널
Scope
핵심 질문
웹 터미널은 브라우저의 terminal emulator와 서버 shell을 어떤 구조로 연결하는가?
Draft
웹 터미널은 브라우저에서 terminal 화면을 그리는 emulator와 서버에서 실제 shell을 실행하는 PTY backend의 조합이다.
Frontend
xterm.js 같은 library는 ANSI escape sequence를 해석해 cursor, color, screen buffer를 브라우저에 렌더링한다. 실제 command를 실행하는 것은 아니다.
Backend
서버는 bash, zsh 같은 shell을 PTY에 연결하고 input과 output을 WebSocket으로 전달한다.
상태
터미널 세션은 일반 HTTP request보다 오래 지속된다. 연결이 끊겼을 때 shell도 종료할지, tmux처럼 세션을 유지할지 정책을 정해야 한다.
핵심
브라우저 terminal emulator와 remote shell 실행을 분리해서 이해하면 구조가 단순해진다. 실제 shell 접근은 별도의 인증·권한·격리 설계가 필요한 서버 기능이다.
Sources
- xterm.js docs (browser terminal emulator): https://xtermjs.org/docs/
- MDN, WebSocket API (browser/server messaging): https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
- OWASP, WebSocket Security Cheat Sheet (connection and authorization boundaries): https://cheatsheetseries.owasp.org/cheatsheets/WebSocket_Security_Cheat_Sheet.html