GoTTY — поделитесь своим терминалом Linux (TTY) как веб-приложением
GoTTY — это простой инструмент командной строки на базе GoLang, который позволяет вам использовать свой терминал (TTY) как веб-приложение. Он превращает инструменты командной строки в веб-приложения.
Он использует эмулятор терминала Chrome OS (hterm) для запуска терминала на основе JavaScript в веб-браузерах. И что немаловажно, GoTTY запускает сервер веб-сокетов, который в основном передает выходные данные из TTY клиентам, получает входные данные от клиентов (то есть, если входные данные от клиентов разрешены) и пересылает их. на TTY.
Читайте также: Teleconsole – поделитесь своим Linux-терминалом с друзьями
Его архитектура (идея hterm + веб-сокет) была вдохновлена программой Wetty, которая позволяет использовать терминал через HTTP и HTTPS.
Предпосылки:
Для запуска GoTTY в Linux должна быть установлена среда GoLang (Go Programming Language).
Как установить GoTTY в системах Linux
Если у вас уже есть работающая среда GoLang, выполните команду go get ниже, чтобы установить ее:
go get github.com/yudai/gotty
Приведенная выше команда установит двоичный файл GoTTY в переменную среды GOBIN. Попробуйте проверить, так ли это:
ls $GOPATH/bin/
Как использовать GoTTY в Linux
Чтобы запустить его, вы можете использовать переменную GOBIN env и функцию автозаполнения команд следующим образом:
$GOBIN/gotty
В противном случае запустите GoTTY или любую другую программу Go, не вводя полный путь к двоичному файлу, добавьте переменную GOBIN в PATH в файле ~/.profile
, используя команду export ниже. :
export PATH="$PATH:$GOBIN"
Сохраните файл и закройте его. Затем создайте файл для внесения внесенных выше изменений:
source ~/.profile
Общий синтаксис для запуска команд GoTTY:
Usage: gotty [options] <Linux command here> [<arguments...>]
Теперь запустите GoTTY с помощью любой команды, например команды df, чтобы просмотреть пространство и использование разделов системного диска через веб-браузер:
gotty df -h
GoTTY по умолчанию запустит веб-сервер через порт 8080. Затем откройте URL-адрес: http://127.0.0.1:8080/
в своем веб-браузере, и вы увидите выполняемую команду, как если бы она выполнялась на вашем терминале:
Как настроить GoTTY в Linux
Вы можете изменить параметры по умолчанию и свой терминал (hterm) в файле профиля ~/.gotty
, он будет загружать этот файл по умолчанию, если он существует.
Это основной файл настроек, считываемый командами gotty, поэтому создайте его следующим образом:
touch ~/.gotty
И установите свои собственные действительные значения для параметров конфигурации (все параметры конфигурации можно найти здесь), чтобы настроить GoTTY, например:
// Listen at port 9000 by default
port = "9000"
// Enable TSL/SSL by default
enable_tls = true
// hterm preferences
// Smaller font and a little bit bluer background color
preferences {
font_size = 5,
background_color = "rgb(16, 16, 32)"
}
Вы можете установить свой собственный файл index.html, используя параметр --index
в командной строке:
gotty --index /path/to/index.html uptime
Как использовать функции безопасности в GoTTY
Поскольку GoTTY по умолчанию не обеспечивает надежную безопасность, вам необходимо вручную использовать определенные функции безопасности, описанные ниже.
Разрешить клиентам запускать команды/вводить ввод в терминале
Обратите внимание, что по умолчанию GoTTY не позволяет клиентам вводить данные в TTY, а позволяет только изменять размер окна.
Однако вы можете использовать параметр -w
или --permit-write
, чтобы разрешить клиентам запись в TTY, что не рекомендуется из-за угроз безопасности сервера.
Следующая команда будет использовать редактор командной строки vi, чтобы открыть файл fossmint.txt для редактирования в веб-браузере:
gotty -w vi fossmint.txt
Ниже приведен интерфейс vi, видимый из веб-браузера (используйте здесь команды vi, как обычно):
Используйте GoTTY с базовой аутентификацией (имя пользователя и пароль)
Попробуйте активировать базовый механизм аутентификации, при котором клиентам потребуется ввести указанное имя пользователя и пароль для подключения к серверу GoTTY.
Приведенная ниже команда ограничит доступ клиента с помощью параметра -c
, чтобы запросить у пользователей указанные учетные данные (имя пользователя: test и пароль: @67890):
gotty -w -p "9000" -c "test:@67890" glances
Gotty Создать случайный URL-адрес
Другой способ ограничить доступ к серверу — использовать опцию -r
. Здесь GoTTY сгенерирует случайный URL-адрес, чтобы только пользователи, знающие URL-адрес, могли получить доступ к серверу.
Также используйте параметр –title-format «GoTTY – {{ .Command }} ({{ .Hostname }})», чтобы определить заголовок интерфейса веб-браузера, а команда gless используется для отображения статистики мониторинга системы. :
gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
Ниже приведен результат выполнения приведенной выше команды, как видно из интерфейса веб-браузера:
Используйте GoTTY с SSL/TLS
Поскольку по умолчанию все соединения между сервером и клиентами не шифруются, когда вы отправляете секретную информацию через GoTTY, например учетные данные пользователя или любую другую информацию, вам необходимо использовать -t
или -. -tls
опция, которая включает TLS/SSL в сеансе:
GoTTY по умолчанию прочитает файл сертификата ~/.gotty.crt
и файл ключей ~/.gotty.key
, поэтому начните также с создания самозаверяющего сертификата. в качестве файла ключа, используя команду openssl ниже (ответьте на вопрос, заданный для создания файлов сертификата и ключа):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt
Затем используйте GoTTY безопасным способом с включенным SSL/TLS следующим образом:
gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
Поделитесь своим терминалом с несколькими клиентами
Вы можете использовать терминальные мультиплексоры для совместного использования одного процесса с несколькими клиентами. Следующая команда запустит новый сеанс tmux с именем gotty с помощью командыglas (убедитесь, что у вас установлен tmux):
gotty tmux new -A -s gotty glances
Чтобы прочитать другой файл конфигурации, используйте параметр –config «/path/to/file» следующим образом:
gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
Чтобы отобразить версию GoTTY, выполните команду:
gotty -v
Посетите репозиторий GoTTY на GitHub, чтобы найти больше примеров использования: https://github.com/yudai/gotty.
Вот и все! Вы пробовали это? Как вы находите GoTTY? Поделитесь с нами своими мыслями через форму обратной связи ниже.