InfraGuard

Terminal SSH PTY interactif

Un vrai shell dans le navigateur (top/vi/sudo fonctionnent) : xterm.js ⇄ WebSocket ⇄ un pont ssh2 en Node ⇄ le sshd distant.

Vue d’ensemble — à quoi cela sert

L’action [ssh] d’une fiche d’instance ouvre un véritable terminal interactif dans le navigateur. Il s’agit d’une console PTY : xterm.js ⇄ WebSocket ⇄ un pont Node (scripts/infr_ssh_bridge.cjs, s’appuyant sur ssh2) ⇄ le sshd distant. Comme ssh2 alloue un PTY distant, les programmes interactifs tels que top, vi, sudo et less fonctionnent (vérifié : tty = /dev/pts).

Ce n’est pas Reverb (le pub/sub ne convient pas à un flux PTY) ni node-pty (ssh2 est du JavaScript pur, multiplateforme, sans PTY local).

Utilisation

L’authentification se fait en deux temps :

  1. Laravel délivre via /asset/instances/ssh/session un ticket signé (niveau ≥ 2 · TTL de 20 s · audité).
  2. Le pont vérifie le ticket. Pour une instance en password, le navigateur relaie le mot de passe dans la première trame WS (jamais stocké) ; pour une instance en key, le pont utilise la clé privée enregistrée (Crypt) ou ~/.ssh/l’agent.
xterm.js  ⇄  WebSocket  ⇄  ssh2 bridge  ⇄  remote sshd (PTY)

Sources de données

Accès

Niveau ≥ 2 + audit. En production, le pont tourne sous supervision, avec wss et épinglage de la clé d’hôte.

Voir aussi

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