Простой и безопасный способ делиться терминалом: обзор инструмента warp

Думаю, ни для кого не секрет, что давать доступ к терминалу первому попавшемуся опасно. Для тех случаев, когда это всё-таки необходимо, пользователь spolu выложил утилиту warp, созданную с упором на безопасность и простоту.
warp

Warp позволяет безопасно делиться терминалом при помощи простой команды warp open. Подключенные пользователи могут наблюдать за всем, что происходит в вашем терминале. Также вы можете выдать права на ввод.

Возможность делиться терминалом существовала и ранее. Отличительной чертой данного решения является простота использования, а также отсутствие необходимости в ssh-соединении.

Установка

На macOS установить warp можно при помощи Homebrew:

brew install warp

Проект написан на языке Go. Убедившись, что у вас установлен этот язык, установите warp следующей командой:

go get -u github.com/spolu/warp/client/cmd/warp

Больше информации об установке и описание возможных проблем можно найти на вики-странице проекта.

Использование

Для того, чтоб начать делиться терминалом, введите warp open <id>.

# Вы можете выбрать любое название (в данном случае **goofy-dev**), 
# в противном случае криптографически стойкий ID будет создан за вас.

$ warp open goofy-dev

В данном случае пользователь задал id самостоятельно. Чтобы подключиться к терминалу, введите:

$ warp connect goofy-dev

Для того, чтобы закончить трансляцию или отключиться от неё, достаточно ввести exit или сочетание клавиш CTRL-D.

Просмотреть список подключённых пользователей можно при помощи команды:

$ warp state

По умолчанию даётся доступ только на просмотр. Для того, чтобы разрешить ввод определённому пользователю, введите:

$ warp authorize stan

Чтобы отозвать это право (в данном случае у пользователя stan), нужно ввести:

$ warp revoke stan

Безопасность

Доступ к терминалу даёт огромное могущество злоумышленнику, поэтому в warp большой упор сделан на безопасность. Будьте очень осторожны при выдаче прав.

TLS-соединение

Все соединения осуществлены при помощи протокола TLS, что даёт защиту от прослушивания пакетов и несанкционированного доступа.

Только просмотр по умолчанию

Как уже было сказано, по умолчанию подключённым пользователям не даётся право на ввод.

Генерируемые ID обладают криптографической стойкостью

Если вы планируете делиться доступом к вводу, безопаснее пользоваться сгенерированным ID. В таком случае посторонним подключиться к раздаче будет намного сложнее.

Trustless read-only

Пока доступ к вводу есть только у одного пользователя (у вас), приложение не доверяет серверу регулирование прав. Как только право на ввод есть у нескольких пользователей,  регулированием прав занимается сервер warpd.

План на будущее

На данный момент проект находится в стадии разработки. В будущих версиях планируется улучшить форматирование текста, использовать HTTPS вместо сокетов и добавить end-to-end шифрование. Более подробно планы описаны в разделе TODO.

Антон Фабрициус