Как расшарить терминал в браузер за одну секунду

19 Jun, 2025

Репозиторий давно не обновлялся

Последнее обновление было 1 год назад.

7,540
🔱 295
👥 33

Представьте ситуацию: вы дебажите странный баг в CI-пайплайне или на удаленном сервере, доступ к которому есть только у вас. Коллега в Slack просит «скинуть логи», но вы понимаете, что логами тут не обойтись — нужно вместе покрутить конфиги или запустить пару тестов в реальном времени. Можно созвониться в Zoom и расшарить экран, но тогда коллега будет просто зрителем. Можно возиться с tmate или настраивать SSH-ключи, но это долго.

Недавно я наткнулся на sshx. Это крошечная утилита на Rust, которая решает проблему совместной работы в консоли максимально изящно. Вы запускаете одну команду, получаете ссылку и открываете полноценный терминал в браузере, где могут одновременно печатать несколько человек.

Что умеет эта штука

Главная фишка sshx в том, что это не просто трансляция текста. Это полноценное рабочее пространство на бесконечном холсте.

Когда вы открываете ссылку, перед вами появляется веб-интерфейс, напоминающий Miro или Figma, но для терминалов. Вы можете открывать несколько окон, изменять их размер, свободно перемещать их и зумить холст. Если к сессии подключились другие люди, вы будете видеть их курсоры в реальном времени. Это очень помогает не «сталкиваться лбами», когда один правит конфиг, а другой проверяет статус сервиса в соседнем окне.

Разработчик проекта, Эдвард Чжан, явно вдохновлялся Mosh. В sshx реализован механизм «predictive echo». Если вы когда-нибудь работали через SSH с большой задержкой, то знаете, как бесит ждать полсекунды появления каждого символа. Здесь же локальный ввод отображается мгновенно, не дожидаясь подтверждения от сервера.

Безопасность и скорость

Обычно такие инструменты вызывают вопросы: «А куда летят мои данные?». Автор заявляет об использовании сквозного шифрования (E2E) с помощью Argon2 и AES. Технически это работает через распределенную сеть серверов, развернутых по всему миру. Утилита автоматически находит ближайший узел, чтобы минимизировать пинг.

Интересно, что проект написан на Rust, а клиентские бинарники статически слинкованы. Это значит, что их можно закинуть на любой старый Linux-сервер или даже на встраиваемую систему вроде Raspberry Pi без установки зависимостей.

Как это использовать на практике

Самый очевидный кейс — парное программирование или быстрая помощь коллеге. Но есть и более интересные сценарии.

Например, отладка в CI/CD. В README есть отличный пример для GitHub Actions. Если билд падает с непонятной ошибкой где-то в недрах виртуальной машины GitHub, можно просто вставить одну строку в конфиг:

run: curl -sSf https://sshx.io/get | sh -s run

Пайплайн остановится, напечатает в логи ссылку, и вы сможете «зайти» внутрь работающего воркера, чтобы посмотреть состояние файлов или переменные окружения. Только будьте осторожны: в публичных репозиториях ссылку в логах увидит кто угодно.

Как попробовать

Установка сводится к одной команде, которая скачивает нужный бинарник под вашу архитектуру (поддерживаются Linux, macOS и Windows):

curl -sSf https://sshx.io/get | sh

Если не хочется ничего устанавливать в систему на постоянной основе, можно запустить sshx в режиме «одноразового» использования:

curl -sSf https://sshx.io/get | sh -s run

После запуска в консоли появится URL вида https://sshx.io/s/abcd.... Передаете её товарищу — и вы в деле.

Стоит ли внедрять в работу

Проект подкупает своей простотой. В отличие от классического SSH, вам не нужно пробрасывать порты, настраивать NAT или возиться с ключами. Это идеальный инструмент для ситуаций «зашел, починил, вышел».

Из минусов стоит отметить отсутствие официальной поддержки self-hosted версии «из коробки». Автор честно пишет, что для самостоятельного деплоя сервера придется вручную настраивать gRPC-форвардинг, TLS и проксирование, что не назовешь легкой прогулкой. Так что в большинстве случаев вы будете зависеть от инфраструктуры sshx.io.

Если вам часто приходится объяснять что-то в терминале «на пальцах» или дебажить удаленные системы в команде, sshx определенно заслуживает места в вашем тулбоксе. Это тот случай, когда одна маленькая утилита экономит кучу нервов при совместном траблшутинге.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.