InfraGuard

Interaktives SSH-PTY-Terminal

Eine echte Shell im Browser (top/vi/sudo funktionieren): xterm.js ⇄ WebSocket ⇄ eine ssh2-Brücke in Node ⇄ der entfernte sshd.

Überblick — wozu es dient

Die Aktion [ssh] auf einer Instanzkarte öffnet ein echtes interaktives Terminal im Browser. Es handelt sich um eine PTY-Konsole: xterm.js ⇄ WebSocket ⇄ eine Node-Brücke (scripts/infr_ssh_bridge.cjs, auf Basis von ssh2) ⇄ der entfernte sshd. Da ssh2 ein entferntes PTY zuweist, laufen auch interaktive Programme wie top, vi, sudo und less (nachgewiesen: tty = /dev/pts).

Das ist nicht Reverb (Pub/Sub eignet sich nicht für einen PTY-Datenstrom) und nicht node-pty (ssh2 ist reines JavaScript, plattformübergreifend und benötigt kein lokales PTY).

Verwendung

Die Anmeldung erfolgt in zwei Stufen:

  1. Laravel stellt über /asset/instances/ssh/session ein signiertes Ticket aus (ab Stufe 2 · 20 s Gültigkeit · auditiert).
  2. Die Brücke prüft das Ticket. Bei einer Instanz mit password überträgt der Browser das Kennwort im ersten WS-Frame (es wird nie gespeichert); bei einer Instanz mit key verwendet die Brücke den hinterlegten privaten Schlüssel (Crypt) oder ~/.ssh bzw. den Agenten.
xterm.js  ⇄  WebSocket  ⇄  ssh2 bridge  ⇄  remote sshd (PTY)

Datenquellen

Zugriff

Ab Stufe 2 + Audit. In der Produktion läuft die Brücke überwacht mit wss und Host-Key-Pinning.

Verwandte Themen

카드의 [ssh] 버튼
카드의 [ssh] 버튼