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 :
- Laravel délivre via
/asset/instances/ssh/sessionun ticket signé (niveau ≥ 2 · TTL de 20 s · audité). - 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
- Clé enregistrée facultative :
infr_instance.ssh_key_enc(Crypt ; seul le booléenhas_ssh_keyest exposé)
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] 버튼](/manual-shots/ko/instance-card.webp)