Обзор — что это делает
Действие [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).
Как пользоваться
Аутентификация двухэтапная:
- Laravel по адресу
/asset/instances/ssh/sessionвыдаёт подписанный билет (уровень ≥ 2 · срок жизни 20 с · с аудитом). - Мост проверяет билет. Для инстанса с типом password браузер передаёт пароль в первом кадре WS (пароль нигде не сохраняется); для инстанса с типом key мост использует сохранённый закрытый ключ (Crypt) либо
~/.ssh/агент.
xterm.js ⇄ WebSocket ⇄ ssh2 bridge ⇄ remote sshd (PTY)
Источники данных
- Необязательный сохранённый ключ:
infr_instance.ssh_key_enc(Crypt; наружу отдаётся только логический признакhas_ssh_key)
Права доступа
Уровень ≥ 2 + аудит. В продуктивной среде мост работает под управлением супервизора, с wss и закреплением ключа узла.
Смежные темы
![카드의 [ssh] 버튼](/manual-shots/ko/instance-card.webp)