Ü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:
- Laravel stellt über
/asset/instances/ssh/sessionein signiertes Ticket aus (ab Stufe 2 · 20 s Gültigkeit · auditiert). - 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
~/.sshbzw. den Agenten.
xterm.js ⇄ WebSocket ⇄ ssh2 bridge ⇄ remote sshd (PTY)
Datenquellen
- Optional hinterlegter Schlüssel:
infr_instance.ssh_key_enc(Crypt; nach außen sichtbar ist nur der Booleanhas_ssh_key)
Zugriff
Ab Stufe 2 + Audit. In der Produktion läuft die Brücke überwacht mit wss und Host-Key-Pinning.
Verwandte Themen
![카드의 [ssh] 버튼](/manual-shots/ko/instance-card.webp)