Visión general: qué hace
La acción [ssh] de una tarjeta de instancia abre una terminal interactiva real en el navegador. Es una consola PTY: xterm.js ⇄ WebSocket ⇄ un puente Node (scripts/infr_ssh_bridge.cjs, basado en ssh2) ⇄ el sshd remoto. Como ssh2 asigna un PTY remoto, los programas interactivos como top, vi, sudo y less funcionan (comprobado: tty = /dev/pts).
Esto no es Reverb (el modelo pub/sub no sirve para un flujo PTY) y no es node-pty (ssh2 es JavaScript puro, multiplataforma y no necesita un PTY local).
Cómo se usa
La autenticación tiene dos fases:
- Laravel emite en
/asset/instances/ssh/sessionun tique firmado (nivel ≥ 2 · TTL de 20 s · auditado). - El puente verifica el tique. En una instancia con password, el navegador transmite la contraseña en la primera trama WS (nunca se almacena); en una instancia con key, el puente usa la clave privada guardada (Crypt) o
~/.ssh/el agente.
xterm.js ⇄ WebSocket ⇄ ssh2 bridge ⇄ remote sshd (PTY)
Fuentes de datos
- Clave guardada opcional:
infr_instance.ssh_key_enc(Crypt; solo se expone el booleanohas_ssh_key)
Acceso
Nivel ≥ 2 + auditoría. En producción el puente se ejecuta supervisado, con wss y fijación de la clave de host.
Relacionado
![카드의 [ssh] 버튼](/manual-shots/ko/instance-card.webp)