InfraGuard

Интерактивный SSH-терминал (PTY)

Настоящая оболочка в браузере (работают top/vi/sudo): xterm.js ⇄ WebSocket ⇄ мост ssh2 на Node ⇄ удалённый sshd.

Обзор — что это делает

Действие [ssh] на карточке инстанса открывает в браузере настоящий интерактивный терминал. Это PTY-консоль: xterm.js ⇄ WebSocket ⇄ мост на Node (scripts/infr_ssh_bridge.cjs, на базе ssh2) ⇄ удалённый sshd. Поскольку ssh2 выделяет PTY на удалённой стороне, работают и интерактивные программы — top, vi, sudo, less (проверено: tty = /dev/pts).

Это не Reverb (модель pub/sub не подходит для потока PTY) и не node-pty (ssh2 написан на чистом JavaScript, работает на всех платформах и не требует локального PTY).

Как пользоваться

Аутентификация двухэтапная:

  1. Laravel по адресу /asset/instances/ssh/session выдаёт подписанный билет (уровень ≥ 2 · срок жизни 20 с · с аудитом).
  2. Мост проверяет билет. Для инстанса с типом password браузер передаёт пароль в первом кадре WS (пароль нигде не сохраняется); для инстанса с типом key мост использует сохранённый закрытый ключ (Crypt) либо ~/.ssh/агент.
xterm.js  ⇄  WebSocket  ⇄  ssh2 bridge  ⇄  remote sshd (PTY)

Источники данных

Права доступа

Уровень ≥ 2 + аудит. В продуктивной среде мост работает под управлением супервизора, с wss и закреплением ключа узла.

Смежные темы

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